一种jsp环境中基于xml的excel报表生成方法

文档序号:8257928阅读:202来源:国知局
一种jsp环境中基于xml的excel报表生成方法
【技术领域】
[0001]一种JSP环境中基于XML的EXCEL报表生成方法是基于JSP语言上的一中动态生成的报表的休现,是计算机领域中的应用部分。
【背景技术】
[0002]随着企业信息化进程的加速,制造执行系统MES (Manufacturing Execut1nSystem)跟企业资源计划ERP (Enterprise Resource Planning)得到了越来越广泛的应用。在这些系统的应用当中,报表打印功能是其中必不可少的一个功能之一,因为报表作为一种重要的信息载体,在企业的信息管理、统计分析当中起者不可替代的作用。而在任何一个企业的应用系统中,报表问题也往往是其中一个难点,尤其是在以JSP语言为基础构造的系统体系当中。比如在此次承担某钢厂的信息化项目开发过程当中,厂方就需要实现这样一种报表系统,具体情况为:
O钢材的力学性能原始数据位于SQLSERVER 2000数据库当中,在将其中某些数据导出时,需要根据不同的分析统计要求对其中的原始数据进行运算,然后将运算后的数据生成初始电子数据报表,可以用函数表示为:Yij=F(Xij), Yij为电子报表某单元格的数据,Xij为SQLSERVER2000数据库中的原始力学性能数据,F为映射关系。
[0003]2)电子报表的数据还有可能根据不同的需要进行二次常规处理跟信息分析并最终打印报表。
[0004]3)电子表格报表样式需符合该厂内部规定的报表样式,能自己进行定义。
[0005]根据上述要求可知,将数据库中的原始数据经过计算后生成EXCEL文件是最合适的。这样就能借助Excel强大、丰富的格式控制和数据处理能力,可以满足用户自由定义报表样式和对数据进行二次处理的要求。既在一定程度上解决了报表的灵活性问题,又节省了不少的开发工作量,缩小了程序设计的规模,简化了程序的维护量,从而大大提高了系统开发的效率。并且EXCEL作为一种广泛使用的软件,也不存在培训问题。在JSP环境中,一般来说有下面几种常用的方法可以生成Excel文件。利用SQLSERVER自带的存储过程导出生成EXCEL文件。此方法简单方便但灵活性差,不能事前定义报表格式,如标题区、表头区、表尾区等等,需要事后再修改、定义其报表样式,后期处理比较麻烦。且厂方要求生成的报表数据是需要经过中间处理的,故此方法不能满足要求。2,利用第三方能生成EXCEL的插件。缺点是插件功能一般有限,不能满足特殊需要,而且一般要收费,也不能很好的用于B/S结构上,此外还需要额外的时间学习了解插件功能。综合考虑系统的需求并经过仔细的研究后我们决定自己开发用来生成EXCEL文件的程序,因为这样即经济又方便,在满足系统要求的前提下是最合适的方法。

【发明内容】

[0006]一种JSP环境中基XML的一种EXCEL报表生成方法,首先进行EXCEL的XML格式解析;报表一般分解为标题区、表头区、表体区和表尾区,也可以将报表的内容分为两部分:
(I)静态描述部分(标题区、表头区和表尾区):静态描述部分在报表格式定义完后是不变的,如字体的大小,字体是否有下划线,是单下划线还是双下划线,字体是否有
上标或下标,字体是左对齐、右对齐还是居中等等。
[0007](2)动态数据填充部分(表体区):这是报表数据的呈现部分,是整个报表的核心。
[0008]新建任意一个EXCEL文件,在其中制作完成相应格式的报表后,另存为XML文件,这样
就得到了 EXCEL文件的XML代码。
[0009]如下面这段xml代码描述了 EXCEL文件的基本信息,如版本、创建时间、作者、样式in
息、最后一次保存时间等,为报表的静态描述部分。
[0010]〈xml vers1n="l.0">
〈mso-applicat1n progid=〃Excel.Sheet〃>
〈Workbook xmlns=〃urn:schemas-microsoft-com:office: spreadsheet"42Z</Created>
<LastSaved>2007-03-10T02:07:25Z</LastSaved>
<Vers1n>ll.6360</Vers1n>
</DocumentProperties>
〈OfficeDocumentSettings xmlns=〃urn:schemas-microsoft-com:office: office〃>〈RemovePersonalInformat1n/〉
〈/OfficeDocumentSettings>
<ExceIWorkbook xmlns=〃urn:schemas-microsoft-com:office:excel〃><WindowHeight>4530</WindowHeight>
<WindowWidth>8505</WindowWidth>
<WindowTopX>480</WindowTopX>
<WindowTopY>120</WindowTopY>
<AcceptLabelsInFormulas/>
<ProtectStructure>False</ProtectStructure>
<ProtectWindows>False</ProtectWindows>
</ExcelWorkbook>
〈Styles〉
〈Style ss:1D=〃Default〃 ss:Name=〃Normal〃>
〈Alignment ss:Vertical=〃Bottom〃/>
〈Borders/〉
〈Font ss:FontName=〃 宋体〃 x:CharSet=〃134〃 ss: Size=〃12〃/>
〈Inter1r/〉
<NumberFormat/>
〈Protect1n/〉〈/Style〉
〈/Styles〉
而下面的一段XML代码描述了 sheetl这张工作表的情况,为动态数据描述部分。其中的XML代码描述了此工作表的行数,列数,单元格的高度及宽度,以及表体区的表头信息
和表中数据信息等等。
[0011 ] <Worksheet ss:Name=^Sheetl">
〈Table ss:ExpandedColumnCount=〃4〃 ss:ExpandedRowCount=〃3〃X:FulIColumns="I"
x:FullRows=〃l〃 ss:DefaultColumnWidth=〃54〃 ss:DefaultRowHeight=〃14.25〃>
〈Row〉
〈CellXData ss:Type="String"> 第一列 </Data>〈/Cell>
〈CellXData ss:Type="String"> 第二列 </Data>〈/Cell>
〈CellXData ss:Type="String"> 第三列 </Data>〈/Cell>
〈CellXData ss:Type="String"> 第四列 </DataX/Cell>
〈/Row〉
〈Row〉
〈CellXData ss:Type="Number">l〈/Data>〈/Cell>
〈CellXData ss:Type="Number">2〈/Data>〈/Cell>
〈CellXData ss:Type="Number">3〈/Data>〈/Cell>
〈CellXData ss:Type="Number">4〈/Data>〈/Cell>
〈/Row〉
〈Row〉
〈CellXData ss:Type="String">a〈/Data>〈/Cell>
〈CellXData ss:Type="String">b〈/Data>〈/Cell>
〈CellXData ss:Type="String">c〈/Data>〈/Cell>
〈CellXData ss:Type="String">d〈/Data>〈/Cell>
〈/Row〉
〈/Table〉
2.通过对XML结构的分析,当要创建一个这样的EXCEL报表的时候,就相对容易了。当报表样式确定以后,静态描述部分是固定不变的,因此按照原样输出即可,只要根据需要由程序设置好相应的动态信息就可以生成XML格式的文件了。比如更改动态描述部分的未加粗体的〈Row〉......〈/Row〉部分即可变更sheet I表体区的表头,更改加粗体部分的
〈Row〉……〈/Row〉和行数描述信息即可增加/减少、更改表体区的数据信息。下面为一个 XML文件的JSPbean创建程序构架: package reportdata; import JSP.10.氺; import JSP.10.FileOutputStream; public class CreateExcel {String str=〃〃;
int sheetlrowcount=8; //sheetl 的总行数
int sheet2rowcount=5; //sheet2 的总行数
int sheet3rowcount=4; //sheet3 的总行数
public CreateExcel () { //构造方法}
public String createHead() { //创建顶部静态描述信息}
public String createsheetl O { // 创建 sheet I 表}
public String createsheet 2() { // 创建 sheet 2 表}
public String createsheet 3() { // 创建 sheet 3 表}
public String createBottomO { //创建底部静态描述信息} }
通过以上的分析,可以分为四步操作:第一步,将所需的原始数据从数据库中取出;第二步,对原始数据进行处理(用JSP程序实现计算过程)并转换为XML信息格式;第三步,利用XML字符流生成XML文件;第四步,转换为正式的EXCEL报表文件。
[0012]在生成XML数据文件后,由于其已经是一个文件数据库,因此可以进行脱机操作,这样就减少了网络流量,提高了系统效率。
【主权项】
1.一种JSP环境中基于XML的EXCEL报表生成方法:该方法主要是通过对的XML格式解析自动生成报表。
2.根据权利要求1的JSP环境中基于XML的EXCEL报表生成方法,其主要特征为:EXCEL的XML格式解析,报表一般分解为标题区、表头区、表体区和表尾区,也可以将报表的内容分为两部分。
3.根据权利要求2的JSP环境中基于XML的EXCEL报表生成方法,其静态描述部分(标题区、表头区和表尾区):静态描述部分在报表格式定义完后是不变的,如字体的大小,字体是否有下划线,是单下划线还是双下划线,字体是否有上标或下标,字体是左对齐、右对齐还是居中等等。
4.根据权利要求2的JSP环境中基于XML的EXCEL报表生成方法,其动态数据填充部分(表体区):这是报表数据的呈现部分,是整个报表的核心。
5.根据权利要求2的JSP环境中基于XML的EXCEL报表生成方法,根据其外部的物点,生成特定的XML格式。
6.根据权利要求5,其JSPbean创建程序构架,生成特定的XML。
7.根据权利要求6,将所需的原始数据从数据库中取出读出其数据流。
8.根据权利要求7,对原始数据进行处理(用JSP程序实现计算过程)并转换为XML信息格式。
9.根据权利要求8,利用XML字符流生成特定的JSP格式的XML文件。
10.根据权利要求9,显示报表格式时转换为正式的EXCEL报表文件。
【专利摘要】一种JSP环境中基于XML的一种EXCEL报表生成方法:JSP语言环境下的基于XML的一种EXCEL报表实现方式。这种报表实现方式利用了XML数据与格式分离的特点,以及EXCEL强大、丰富的格式控制和数据处理能力。利用这一技术能够简化程序设计,降低开发难度和开发成本.与其他EXCEL报表生成方法相比,其灵活性、可控性也大为提高。
【IPC分类】G06F9-44
【公开号】CN104572048
【申请号】CN201310489798
【发明人】不公告发明人
【申请人】镇江鼎拓科技信息有限公司
【公开日】2015年4月29日
【申请日】2013年10月18日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1