数据库设计:
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>
分享到:
相关推荐
本篇主要介绍一个基于MFC实现的Excel解析类,该类能够高效地读取和写入Excel数据。 标题中的"MFC实现的Excel解析类"指的是利用MFC框架开发的一个专门处理Excel文件的类。这个类可能包含了对Excel文件的操作,如打开...
下面是一个简单的Java代码示例,演示如何使用POI来生成Excel 2007文件: ```java //输出流 OutputStream os = new FileOutputStream("D:/temp/create.xlsx"); //工作区 XSSFWorkbook wb = new XSSFWorkbook(); //...
"导入Excel快速生成DTO"这个标题暗示了一个工具或库,它能帮助开发者从Excel文件中快速创建对应的Java Bean类,从而提高开发效率。下面我们将深入探讨这一主题。 首先,我们需要理解什么是DTO。DTO是一种无业务逻辑...
本压缩包文件“生成EXCEL报表(JAVA的).rar”可能包含了一个简单实现这一功能的示例项目,名为“报表Excel2K”。下面我们将详细探讨如何在Java中生成Excel报表,并基于描述推测的示例进行解析。 首先,生成Excel...
综上所述,VB6从Excel导入Access并打印报表的源码实现,涵盖了数据处理、数据库操作、报表生成、打印控制等多个关键环节,是学习VB6与Office组件集成的一个典型示例。通过深入理解并实践这个项目,可以提升在企业级...
总之,CodeIgniter注释生成器是一个非常实用的开发辅助工具,尤其适合那些基于CodeIgniter框架进行大型项目开发的团队。通过自动化注释生成,它可以减轻开发负担,提高代码质量,促进团队间的有效沟通。
【Excel模板Java实体生成器】是一种工具,它利用Apache POI库来解析Excel文件,无论是2003版的老格式还是2007版的新格式,都能够被它识别并读取。这个工具的主要目的是帮助开发者根据Excel表格中的数据结构自动生成...
- 然后,在Struts2的Action类中,创建一个方法,该方法负责调用Hibernate查询数据,并使用POI库生成Excel文件。 - 数据查询完毕后,使用POI创建Excel工作簿,将数据逐条写入到工作表中。 - 最后,可以将生成的...
总之,"Grid导出到Excel例子(源码+注释)"是一个实用的学习资源,涵盖了前端开发中数据处理和导出的关键技术。通过深入研究和实践,你不仅可以掌握Grid组件的使用,还能了解数据交换格式、Blob对象以及浏览器下载...
matlab操作excel写excel的一个例子,带注释,便于阅读。
Excel文件中的"Excel根据表格,生成sql语句 .xlsm"很可能就是一个包含宏的Excel工作簿,用户可以打开这个文件,按照指示填写表格,然后运行宏来生成SQL Server的建表语句。 总结来说,这个方法是利用Excel的宏功能...
标签“Struts报表”表明这是一个关于使用Struts框架进行报表生成的例子。在企业级应用中,报表通常涉及大量的数据处理和展示,因此了解如何在Struts中有效地实现这一功能是非常重要的。 文件列表中的"Excel2"可能是...
我整理的利用java代码导出数据库的数据 并保存到Excel表格当中 常用的 移植性高
2. **创建Excel文件**:使用Excel的API(如Microsoft Office Interop库)或者第三方库(如NPOI、EPPlus等),创建一个新的Excel工作簿并设定相应的格式。 3. **写入数据**:将从组态王导出的数据逐行写入到Excel的...
XML与JSON格式的比较是另一个重要知识点。尽管XML是一种结构化的数据表示方式,但它比JSON更冗长,解析速度较慢。JSON因其简洁性和易读性,通常更适合在网络传输和前端开发中使用。然而,XML提供了丰富的命名空间、...
你可以使用`WorkbookFactory.create()`方法来打开一个现有的Excel文件或创建一个新的Workbook。 3. **处理Sheet对象**:Workbook包含了多个Sheet,每个Sheet对应Excel中的一个工作表。通过调用`Workbook.getSheetAt...
"注释生成工具"就是针对这一需求而设计的软件,旨在自动化地为代码添加注释,以提高开发效率。 这类工具通常具有以下功能: 1. **自动生成注释模板**:根据代码语言(如Java、Python、C++等)和特定的注释格式(如...
"函数自动注释器"是一个工具,它能够自动生成函数的注释,减轻程序员在编写代码时的负担,提高开发效率。本文将深入探讨函数注释的重要性和自动注释器的工作原理。 函数注释是编程中的一个重要组成部分,它为函数...
### JAVA环境中基于XML的一种EXCEL报表生成方法 在企业信息化快速发展的背景下,制造执行系统(MES)与企业资源计划(ERP)等系统的广泛应用,使得报表打印功能成为了企业信息管理系统中不可或缺的部分。报表作为...
在本篇文章中,我们将深入探讨如何使用JXL进行报表制作,并结合一个实例,来理解JXL封装类的用法,简化报表生成的过程。 首先,我们来看JXL的核心功能。JXL提供了读取、写入和修改Excel文件的能力。它支持多种Excel...