数据库设计:
Table 信息表字段:
SYS_TABLE_NO<o:p></o:p>
SYS_TABLE_NAME<o:p></o:p>
SYS_TABLE_CHS_NAME<o:p></o:p>
SYS_APP_ID<o:p></o:p>
SYS_TABLE_IF_BASE_TABLE
<o:p> </o:p>
列信息表字段
SYS_COLUMN_ID<o:p></o:p>
SYS_APP_ID<o:p></o:p>
SYS_OBJECT_ID<o:p></o:p>
SYS_TABLE_NO<o:p></o:p>
SYS_COLUMN_NO<o:p></o:p>
SYS_COLUMN_NAME<o:p></o:p>
SYS_COLUMN_CHS_NAME<o:p></o:p>
SYS_COLUMN_TYPE<o:p></o:p>
SYS_COLUMN_LENGTH<o:p></o:p>
SYS_COLUMN_ISNULLABLE<o:p></o:p>
SYS_COLUMN_AUTOVAL<o:p></o:p>
SYS_STORAGE_TYPE
<o:p> </o:p>
Excel批注信息:
(1403182083,32,1,4,0,1,0,0,0,1,30,2,0)<o:p></o:p>
XXXXX_XXX_XXXXXXX<o:p></o:p>
类型:XXX<o:p></o:p>
时间:0月0日1:30
<o:p> </o:p>
解析Excel批注信息,生成对应的Sql语句。
SqlParse.java
import java.util.Calendar;<o:p></o:p>
<o:p> </o:p>
import org.eimhe.bean.SysColumnInfo;<o:p></o:p>
import org.eimhe.bean.SysTableInfo;<o:p></o:p>
import org.eimhe.dao.SysColumnInfoDao;<o:p></o:p>
import org.eimhe.dao.SysTableInfoDao;<o:p></o:p>
class ReceiveData{<o:p></o:p>
long columnId; //列号<o:p></o:p>
long recordKey1; //电厂号或区域号<o:p></o:p>
long recordKey2; //机组号<o:p></o:p>
int timeType; //timetype<o:p></o:p>
int dataValue; //0采样值<o:p></o:p>
int typeValue; //数据类型<o:p></o:p>
int yearValue;<o:p></o:p>
int monthValue;<o:p></o:p>
int DayValue;<o:p></o:p>
int hourValue;<o:p></o:p>
int minuteValue;<o:p></o:p>
int formulaValue;<o:p></o:p>
<o:p> </o:p>
}<o:p></o:p>
public class SqlParser {<o:p></o:p>
private String sqlColname="";<o:p></o:p>
private long sqlTableNo=<st1:chmetcnv tcsc="0" hasspace="False" sourcevalue="0" negative="False" numbertype="1" unitname="l" w:st="on">0l</st1:chmetcnv>;<o:p></o:p>
private String sqlTableName="";<o:p></o:p>
private int objectType=0;<o:p></o:p>
private String year="",month="",day="";<o:p></o:p>
private static int periodId=0;<o:p></o:p>
private static String[] x;<o:p></o:p>
private static StringBuffer result;<o:p></o:p>
int i,j;<o:p></o:p>
private static SysColumnInfo sysColumnInfo=new SysColumnInfo();//系统列信息<o:p></o:p>
private static SysTableInfo sysTableInfo=new SysTableInfo();//系统表信息<o:p></o:p>
private static SysColumnInfoDao sysColumnInfoDao=new SysColumnInfoDao();<o:p></o:p>
private static SysTableInfoDao sysTableInfoDao=new SysTableInfoDao();<o:p></o:p>
private static ReceiveData rd;<o:p></o:p>
public static String sqlParser2(String comment,Calendar cal){<o:p></o:p>
// x[0]-----列号<o:p></o:p>
// x[1]-----电厂号或区域号<o:p></o:p>
// x[3]-----机组号<o:p></o:p>
// x[4]-----timetype<o:p></o:p>
// x[5]-----0采样值<o:p></o:p>
// x[6]-----数据类型<o:p></o:p>
// x[7]-----年<o:p></o:p>
// x[8]-----月<o:p></o:p>
// x[9]-----日<o:p></o:p>
// x[10]-----时<o:p></o:p>
// x[11]-----分<o:p></o:p>
// x[12]-----公式<o:p></o:p>
x=comment.split(",");<o:p></o:p>
rd=new ReceiveData();<o:p></o:p>
try{<o:p></o:p>
rd.columnId=Long.parseLong(x[0]);<o:p></o:p>
rd.recordKey1=Long.parseLong(x[1]);<o:p></o:p>
rd.recordKey2=Long.parseLong(x[2]);<o:p></o:p>
rd.timeType=Integer.parseInt(x[3]);<o:p></o:p>
rd.dataValue=Integer.parseInt(x[4]);<o:p></o:p>
rd.typeValue=Integer.parseInt(x[5]);<o:p></o:p>
rd.yearValue=Integer.parseInt(x[6]);<o:p></o:p>
rd.monthValue=Integer.parseInt(x[7]);<o:p></o:p>
rd.DayValue=Integer.parseInt(x[8]);<o:p></o:p>
rd.hourValue=Integer.parseInt(x[9]);<o:p></o:p>
rd.minuteValue=Integer.parseInt(x[10]);<o:p></o:p>
rd.formulaValue=Integer.parseInt(x[11]);<o:p></o:p>
}catch(Exception e){<o:p></o:p>
System.err.println("Exception for OutBoundOfArray");<o:p></o:p>
e.printStackTrace();<o:p></o:p>
} <o:p></o:p>
<o:p> </o:p>
sysColumnInfo=(SysColumnInfo) sysColumnInfoDao.find(rd.columnId);<o:p></o:p>
sysTableInfo=(SysTableInfo) sysTableInfoDao.find(sysColumnInfo.getSysTableNo());<o:p></o:p>
result=new StringBuffer();<o:p></o:p>
result.append("select ");<o:p></o:p>
result.append(sysColumnInfo.getSysColumnName().trim());<o:p></o:p>
result.append(" from ");<o:p></o:p>
result.append(sysTableInfo.getSysTableName());<o:p></o:p>
result.append(" where ");<o:p></o:p>
switch((sysColumnInfo.getSysObjectId()).intValue()){<o:p></o:p>
case 1: //公司<o:p></o:p>
result.append("COMPANY_ID ="); <o:p></o:p>
result.append(rd.recordKey1);<o:p></o:p>
result.append(" AND ");<o:p></o:p>
break;<o:p></o:p>
case 2: //电厂<o:p></o:p>
result.append("POWER_PLANT_ID =");<o:p></o:p>
result.append(rd.recordKey1);<o:p></o:p>
result.append(" AND ");<o:p></o:p>
break;<o:p></o:p>
case 3://机组<o:p></o:p>
result.append("POWER_PLANT_ID =");<o:p></o:p>
result.append(rd.recordKey1);<o:p></o:p>
result.append(" AND MACHINE_NO =");<o:p></o:p>
result.append(rd.recordKey2);<o:p></o:p>
result.append(" AND ");<o:p></o:p>
break;<o:p></o:p>
case 4://电网<o:p></o:p>
result.append("NET_AREA_ID =");<o:p></o:p>
result.append(rd.recordKey1);<o:p></o:p>
result.append(" AND ");<o:p></o:p>
break;<o:p></o:p>
case 5://省市<o:p></o:p>
result.append("REGION_ID =");<o:p></o:p>
result.append(rd.recordKey1);<o:p></o:p>
result.append(" AND ");<o:p></o:p>
break;<o:p></o:p>
case 6://省际联络线<o:p></o:p>
result.append("TIELINE_ID =");<o:p></o:p>
result.append(rd.recordKey1);<o:p></o:p>
result.append(" AND ");<o:p></o:p>
break;<o:p></o:p>
case 7://线路<o:p></o:p>
result.append("LINE_ID =");<o:p></o:p>
result.append(rd.recordKey1);<o:p></o:p>
result.append(" AND ");<o:p></o:p>
break;<o:p></o:p>
case 8://变压器<o:p></o:p>
result.append("TRANSFORMER_ID =");<o:p></o:p>
result.append(rd.recordKey1);<o:p></o:p>
result.append(" AND ");<o:p></o:p>
break; <o:p></o:p>
}<o:p></o:p>
//处理时间<o:p></o:p>
if(rd.dataValue<0){<o:p></o:p>
cal.add(cal.DATE,rd.DayValue);<o:p></o:p>
}else if(rd.minuteValue<0){<o:p></o:p>
cal.add(cal.MONTH, rd.monthValue);<o:p></o:p>
}else if(rd.yearValue<0){<o:p></o:p>
cal.add(cal.YEAR, rd.yearValue);<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
switch(rd.timeType){<o:p></o:p>
case 4: //时段<o:p></o:p>
periodId=rd.hourValue*4+(rd.minuteValue/15)+1;<o:p></o:p>
result.append(" YEAR= "+cal.get(cal.YEAR));<o:p></o:p>
result.append(" AND MONTH="+(cal.get(cal.MONTH)+1));<o:p></o:p>
result.append(" AND DAY="+cal.get(cal.DAY_OF_MONTH));<o:p></o:p>
// result.append(" AND PERIOD_ID="+periodId);<o:p></o:p>
result.append(" order by period_id");<o:p></o:p>
break;<o:p></o:p>
case 5: //小时<o:p></o:p>
periodId=rd.hourValue*4+(rd.minuteValue/15)+1;<o:p></o:p>
result.append(" YEAR= "+cal.get(cal.YEAR));<o:p></o:p>
result.append(" AND MONTH="+(cal.get(cal.MONTH)+1));<o:p></o:p>
result.append(" AND DAY="+cal.get(cal.DAY_OF_MONTH));<o:p></o:p>
// result.append(" AND PERIOD_ID="+periodId);<o:p></o:p>
result.append(" order by period_id");<o:p></o:p>
break;<o:p></o:p>
case 3: //日 <o:p></o:p>
result.append(" YEAR= "+cal.get(cal.YEAR));<o:p></o:p>
result.append(" AND MONTH="+(cal.get(cal.MONTH)+1));<o:p></o:p>
result.append(" AND DAY="+cal.get(cal.DAY_OF_MONTH));<o:p></o:p>
break;<o:p></o:p>
case 2:<o:p></o:p>
result.append(" YEAR= "+cal.get(cal.YEAR));<o:p></o:p>
result.append(" AND MONTH="+(cal.get(cal.MONTH)+1));<o:p></o:p>
break;<o:p></o:p>
case 1:<o:p></o:p>
result.append(" YEAR= "+cal.get(cal.YEAR));<o:p></o:p>
break;<o:p></o:p>
}<o:p></o:p>
return result.toString(); <o:p></o:p>
}<o:p></o:p>
<o:p> </o:p>
}
<o:p> </o:p>
<o:p> </o:p>
<o:p> </o:p>
加载Workbook,
Workbookpool.java
package org.eimhe.poi;<o:p></o:p>
<o:p> </o:p>
import java.io.FileInputStream;<o:p></o:p>
import java.util.concurrent.ConcurrentHashMap;<o:p></o:p>
<o:p> </o:p>
import org.apache.poi.hssf.usermodel.HSSFSheet;<o:p></o:p>
import org.apache.poi.hssf.usermodel.HSSFWorkbook;<o:p></o:p>
<o:p> </o:p>
public class WorkbookPool {<o:p></o:p>
private static final String fileNames="日前竞价_全.xls";<o:p></o:p>
private static final ConcurrentHashMap sheets=new ConcurrentHashMap(); <o:p></o:p>
private static FileInputStream fis;<o:p></o:p>
private static HSSFWorkbook workbook;<o:p></o:p>
<o:p></o:p>
<fo>
分享到:
相关推荐
用C#操作DataTable生成Excel数据列表,并根据数据列表生成Excel的柱状图或者折线图的报表,内附详细的代码和注释,本人用VS2010写的例子
Excel解析类,可以方便实现Excel数据的读取和写入,将最主要的函数接口进一步封装,每个函数都有详细注释。
python解析xml生成excel文档,有彩色效果,注释
matlab操作excel写excel的一个例子,带注释,便于阅读。
我整理的利用java代码导出数据库的数据 并保存到Excel表格当中 常用的 移植性高
JavaDoc工具 解析Java源码注释,生成api文档、接口文档
Grid导出到Excel例子(源码+注释)可直接导入myeclipse中学习。
深度解析C语言+注释版,在重点与难点处有加书签和彩色标记,方便查阅.pdf
支持Mysql与oracle自动在excel中生成创建sql语句,非常强大,如果想使用sqlserver看我上一资源
C++代码文档生成器 根据代码及注释自动生成代码文档.zip
自用的C#编程工具,为... 使用方法:打开PL/SQL,浏览一个表Table,切换到SQL窗口,拷贝列定义部分 如:id NUMBER, rq DATE, content NVARCHAR2(2000) 拷贝到转换工具栏中的输入文本框中,点击转换按钮自动生成代码
3.测试数据与族谱表结构完全相同,是一个完全真实的家谱,因隐私原因,姓名全部改成了“测试”。 4.由于Excel2003有256列的列宽限制,所以此代码必须在Office2007以上版本运行。 5.代码中注释了打印设置相关的内容,...
函数自动注释器,自动生成函数注释,方便编写代码
VSCode如何快速生成注释
默认注解:@Deprecated @Override ... 自定义注解:public @interface FirstAnno {} #@interface 元注解:加在自定义注解的类接口上 ...@Documented 这个注解可以让生成的文档,有注解的注释,默认是没有注解的注释
java读取excel表中数据(带注释)
excel 按照固定格式生成建表SQL,支持主键、索引、默认值、是否为空、注释
根据注释生成文档
数据结构 C++ 详细注释 二叉树的种种操作练习6例子.rar
自己做的一个vb.net注释生成工具,可以生成过程或函数的自认比较正规的注释。欢迎大家多提宝贵意见。