一种电子报表生成方法及装置的制造方法
【技术领域】
[0001] 本发明设及电子报表技术领域,更具体地说,设及一种电子报表生成方法及装置。
【背景技术】
[0002] 电子报表是很多商业应用系统中用于数据对账、展示、分析、统计等功能的电子文 件,作为商业应用系统中的重要组成部分,电子报表的数据量逐日增大且电子报表的格式 日趋复杂。
[0003] 例如,在代理财政综合服务的系统建设中,某银行需要按照财政部、人民银行的要 求生成各类日报、月报、年报等,所要出具的电子报表的数据规模W及格式要求如下:
[0004] (1)数据量在数万行到十几万行之间。在一些交易量较大的工作日中,财政日报的 数据记录经常会有数万条,而全年利息计算时所要处理的数据量也将达到数十万条。
[0005] (2)财政部、人民银行等单位的报表格式较复杂,对分页、分栏、空行、单元格行高、 列宽、字体、合并单元格等报表样式也有较严格的要求。
[0006] (3)一份报表不能分解成多张完成,也不能在表内分多个sheet展不。
[0007]W财政授权支出日报为例来说明电子报表的格式要求,要求对所有的数据行进行 分页,每页共计24行,同时,在每一页内,要求对所有数据分两列显示,左右各24条数据,序 号按照先左后右的顺序递增,对每个单元格中的中文和金钱等都各有要求,另外,对于制表 日期、当前页数、总页数等信息要随时间、页码自动变更。
[0008]目前生成电子报表的工具分别是;采用ApacheP0I类库操作Excel的各类工具, 比如润乾报表、Excel化iIs(-种基于ApacheP0I类库的java报表制作工具)和JXLS(- 种基于ApacheP0I类库的java报表制作工具)等。
【发明内容】
[0009] 有鉴于此,本发明的目的是提供一种电子报表生成方法及装置,用于提供一种不 基于ApacheP0I类库等现有技术的电子报表生成方式。为了实现上述目的,本发明提供如 下技术方案:
[0010] 本发明一种电子报表生成方法,所述方法包括:
[0011] 获取所述电子报表对应的模板文件;
[0012] 对所述模板文件进行解析,得到需进行修改的多个底层可扩展标记语言文件;
[0013] 依据所述多个底层可扩展标记语言文件,对所述多个底层可扩展标记语言文件在 程序中对应的基础类进行初始化,得到所述多个底层可扩展标记语言文件中的sheet,xml 文件和sharedStrings.xml文件中指向数据的链接行,其中所述sheet,xml文件为电子表 格中工作表的文件,sharedStrings.xml文件用于存储所述电子报表中每一个sheet的真 实数据;
[0014] 获取其他底层可扩展标记语言文件的修改数据W及依据所述链接行中的每个组 件获取所述sheet,xml文件和sharedStrings.xml文件中每个单元格所需的真实数据,其 中每个组件用于指向所述电子报表中每个单元格所需数据;
[0015] 使用文件输入输出流的方式将所述真实数据和所述修改数据写入到对应的所述 多个底层可扩展标记语言文件中;
[0016] 将写入数据的多个底层可扩展标记语言文件进行压缩,并将压缩后得到的压缩包 的文件后缀名修改为所述电子报表对应的后缀名,W得到所述电子报表。
[0017] 优选地,所述使用文件输入输出流的方式将所述真实数据和所述修改数据写入到 对应的所述多个底层可扩展标记语言文件中,包括:
[0018] 将所述真实数据和所述修改数据写入到内存中;
[0019] 当所述内存中所述数据的数据量大于第一预设值时,从所述内存中获取数据量为 第二预设值的数据;
[0020] 使用文件输入输出流的方式将从内存中获取的数据写入到对应的所述多个底层 可扩展标记语言文件中。
[0021] 优选地,所述依据所述多个底层可扩展标记语言文件,对所述多个底层可扩展标 记语言文件在程序中对应的基础类进行初始化,得到所述多个底层可扩展标记语言文件中 的sheet, xml文件和sharedStrings. xml文件中指向数据的链接行,包括;
[0022] 依据所述多个底层可扩展标记语言文件,对所述多个底层可扩展标记语言文 件在程序中对应的基础类进行初始化,并采用自上而下的方式对sheet, xml文件和 sharedStrings. xml文件中的组件进行处理,得到所述多个底层可扩展标记语言文件中的 sheet, xml文件和sharedStrings. xml文件中指向数据的链接行。
[0023] 优选地,所述使用文件输入输出流的方式将所述真实数据写入到对应的所述多个 底层可扩展标记语言文件中,包括:
[0024] 判断从数据源获取到的真实数据是否可W直接写入对应的所述多个底层可扩展 标记语言文件中;
[0025] 如果是,使用文件输入输出流的方式将所述真实数据写入到对应的所述多个底层 可扩展标记语言文件中;
[0026] 如果否,对从数据源中获取的真实数据进行处理W使其可W写入到对应的所述多 个底层可扩展标记语言文件中,并使用文件输入输出流的方式将处理后的真实数据写入到 对应的所述多个底层可扩展标记语言文件中。
[0027] 优选地,当数据源是数据库时,使用S化标签获取数据库中的真实数据,当数据源 是文件时,使用File标签获取文件中的真实数据。
[0028] 本发明提供一种电子报表生成装置,所述装置包括:
[0029] 第一获取单元,用于获取所述电子报表对应的模板文件;
[0030] 解析单元,用于对所述模板文件进行解析,得到需进行修改的多个底层可扩展标 记语言文件;
[0031] 初始化单元,用于依据所述多个底层可扩展标记语言文件,对所述多个底层可扩 展标记语言文件在程序中对应的基础类进行初始化,得到所述多个底层可扩展标记语言文 件中的sheet, xml文件和sharedStrings. xml文件中指向数据的链接行,其中所述sheet, xml文件为电子表格中工作表的文件,sharedStrings. xml文件用于存储所述电子报表中 每一个sheet的真实数据;
[0032] 第二获取单元,用于获取其他底层可扩展标记语言文件的修改数据W及依据所述 链接行中的每个组件获取所述sheet, xml文件和sharedStrings. xml文件中每个单元格所 需的真实数据,其中每个组件用于指向所述电子报表中每个单元格所需数据;
[0033] 写入单元,用于使用文件输入输出流的方式将所述真实数据和所述修改数据写入 到对应的所述多个底层可扩展标记语言文件中;
[0034] 修改单元,用于将写入数据的多个底层可扩展标记语言文件进行压缩,并将压缩 后得到的压缩包的文件后缀名修改为所述电子报表对应的后缀名,W得到所述电子报表。 [00巧]优选地,所述写入单元包括:
[0036] 第一写入子单元,用于将所述真实数据和所述修改数据写入到内存中;
[0037] 获取子单元,用于当所述内存中所述数据的数据量大于第一预设值时,从所述内 存中获取数据量为第二预设值的数据;
[0038] 第二写入子单元,用于使用文件输入输出流的方式将从内存中获取的数据写入到 对应的所述多个底层可扩展标记语言文件中。
[0039] 优选地,所述初始化单元具体用于:依据所述多个底层可扩展标记语言文件,对所 述多个底层可扩展标记语言文件在程序中对应的基础类进行初始化,并采用自上而下的方 式对sheet, xml文件和sharedStrings. xml文件中的组件进行处理,得到所述多个底层可 扩展标记语言文件中的sheet, xml文件和sharedStrings. xml文件中指向数据的链接行。
[0040] 优选地,所述写入单元包括:
[0041] 判断子单元,用于判断从数据源获取到的真实数据是否可W直接写入对应的所述 多个底层可扩展标记语言文件中;
[0042] 第=写入子单元,用于当所述判断子单元判断从数据源获取到的真实数据可W直 接写入对应的所述多个底层可扩展标记语言文件中时,使用文件输入输出流的方式将所述 真实数据写入到对应的所述多个底层可扩展标记语言文件中;
[0043] 处理子单元,用于当所述判断子单元判断从数据源获取到的真实数据不可W直接 写入对应的所述多个底层可扩展标记语言文件中时,对从数据源中获取的真实数据进行处 理W使其可W写入到对应的所述多个底层可扩展标记语言文件中,并使用文件输入输出流 的方式将处理后的真实数据写入到对应的所述多个底层可扩展标记语言文件中。
[0044] 优选地,当数据源是数据库时,使用S化标签获取数据库中的真实数据,当数据源 是文件时,使用File标签获取文件中的真实数据。
[0045] 与现有技术相比,本发明的优点如下:
[0046] 本发明提供的电子报表生成方法及装置,在获取到电子报表对应的模板文件 后,可W对模板文件进行解析,得到需进行修改的多个底层XML巧xtensibleMarkup Language,可扩展标记语言)文件,然后通过对其进行一系列处理后得到一压缩包,再将 该压缩包的文件后缀名修改为所述电子报表对应的后缀名,W得到所述电子报表,因此由 Microsoft开发的WXML为基础的电子表格都可W采用本发明实施例提供的电子报表生 成方法得到,并且从本发明实施例提供的电子报表生成方法及装置所示流程来看,其在生 成电子报表过程中并未基于ApacheP0I类库等现有技术,而是一种新的有别于现有基于 ApacheP0I类库等现有技术的电子报表生成方式。
【附图说明】
[0047] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可W根据 提供的附图获得其他的附图。
[0048] 图1为本发明实施例提供的电子报表生成方法的一种流程图;
[0049] 图2为本发明实施例提供的一种模板文件的示意图;
[0050] 图3为本发明实施例提供的模板文件修改解压后得到的文件夹中的文件结构图;
[0051] 图4为本发明实施例提供的[Content_Types].xml的文档结构图;
[0052] 图5为本发明实施例提供的woricbook.xml的文档结构图;
[0053] 图6为本发明实施例提供的wor化ook.xml.rels的文档结构图;
[0054]
图7为本发明实施例提供的sheetl.xml的文档结构图;
[00巧]图8为本发明实施例提供的sharedStrings.xml的文档结构图;
[0056] 图9为本发明实施例提供的S切les.xml的文档结构图;
[0057] 图10为本发明实施例提供的app.xml的文档结构图;
[0058] 图11为本发明实施例提供的包结构和继承关系的示意图;
[0059] 图12为图1所示电子报表生成方法中写入数据的流程图;
[0060] 图13图2所示模板文件对应的电子报表的示意图;
[0061] 图14为本发明实施例提供的另一种模板文件的示意图;
[0062] 图15为图14所示模板文件对应的电子报表的示意图;
[0063] 图16为本发明实施例提供的电子报表生成装置的一种结构示意图;
[0064] 图17为图16所示电子报表生成装置中写入单元的一种结构示意图;
[0065] 图18为图16所示电子报表生成装置中写入单元的另一种结构示意图。
【具体实施方式】
[0066] 首先为了使本领域技术人员更好地理解本发明实施例,将对本发明实施例设及的 专用术语进行介绍:
[0067]xlsx;由Microsoft开发的一种WXML为基础并WZIP格式压缩的电子表格文件 规范,属于ISO29500标准的一部分;从MicrosoftOfficeEXCEL2007开始xlsx已成为 其默认文件格式,同时国产软件WPS(WordProcessingSystem,文字编辑系统)也支持该文 件规范;
[0068] 电子报表;银行等商业系统中用于数据对账、展示、分析、统计等功能的电子文 件;
[0069] 模板文件;是指本发明中为生成最终电子报表而提前准备好的某种样板报表;可 W通过MicrosoftOfficeEXCEL软件编辑此模板文件,定义最终电子报表的各种展现样 式、数据来源及各种数据处理转化标签;
[0070] 标签;是指本发明中可自定义的具有数据处理与逻辑处理功能的组件;模板文件 中所引用的标签,其语法形式常^<FAP:>开始,</FAP>结束;
[0071] 变量;该里是指模板文件中的变量,W 标识,本发明中变量属于表达式中的一 种;
[0072] 表达式;该里是指模板文件中定义的获取数据的表达式,W$W标识;
[007引公式沿里是指模板中文件所引用的公式,W${F_公式名}标识;常用于电子报 表中动态单元格的求和、求平均等操作;本发明中的公式属于标签的一种;
[0074] 大数据量;本发明中特指单个电子报表超过10万行数据的场景。
[0075] 内存溢出;是指程序运行时,进程所需内存超出进程所能获得内存时的一种现 象;
[0076] 上下文无关文法最右推导;在推导的任何一步A=〉B(其中AB是句型),都对A 中最右非终结符进行替换。
[0077] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[007引请参阅图1,其示出了本发明实施例提供的电子报表生成方法的一种流程图,可W包括W下步骤:
[0079] 101;获取电子报表对应的模板文件。其中模板文件为预生成的某种类型的电子报 表的一个通用文件,通过采用下述步骤对通用文件进行处理则可W得到电子报表。该样对 于同一种类型的电子报表来说可W使用同一个模板文件,也就是说本发明实施例支持套用 模板文件,W减少程序端的格式操作,将电子报表直接与数据库联系。
[0080] 在本发明实施例中,模板文件包括;表头、数据部分和表尾,数据部分至少包括标 签和W数据对象为基础的表达式两部分,模板文件中表头和表尾在电子报表中也要存在, 其具体信息与模板文件中的信息相同,因此可W将表头和表位对应的具体信息写入到后续 的底层XML文件中即可,相对于现有技术来说,降低对模板文件操作的复杂度。
[0081] 模板文件的示意图可W参阅图2所示,图2为预生成的财政日报该一日报类型的 电子报表的模板文件。在图2中"序号"一行为模板文件的表头部分,其余部分为数据部分, 在图2所示的数据部分包括;ForEach标签、If标签、PageBreak标签和表达式。其中每个 标签都是妒'<FAP:"开始,妒'</FAP> "结束,<FAP:为标签所在行的开始行,</FAP>为标签 所在行的结束行,开始行和结束行之间包含的行列为该标签的作用域。在最终的电子报表 中,模板文件中原本的标签所在行将被删去,不出现在电子报表中,下面介绍本发明实施例 所提供的标签:
[0082]ForEach标签
[0083] 该标签中,items属性对应着表示大数据的数据对象,比如该里的"pages",其是 一个List对象,var属性的值为"page",表示pages的一个引用,在其作用域内指代pages 该个对象,比如制表日期一项中为$ {page,makedate},即将pages该个对象的makedate变 量的值填充到制表日期该一项中。通常,在一个List对象中存储着数十万条数据信息,对 应着每一行数据,ForEach标签的作用就是将该些bean中所包含的数据信息循环写入到模 板文件中,bean为包含较多数据的数据集合,可W将其看做一个大数据的数据对象。
[0084]If标签
[0085]该标签主要起到数据筛选的作用,当数据信息满足If标签的test属性中的表达 式时,该数据信息才被填充到该一行,该在模板文件的排序操作中经常用到,比如模板文件 中每一个row(行)的rowtype有1、2、3、4四种类型,本发明会自动判断该row的类型,并 将符合条件的行数据放在模板文件中。
[0086]PageBreak标签
[0087] 该标签是起分页的作用,很多电子报表在打印时对每一页的标题、行数等会有要 求,开发者可W在模板文件中采用化ge化eak来添加分页。
[0088] 下面介绍代表着真实数据的表达式:
[0089] 表达式的形式为"",大括号中的内容表示要访问的数据对象的某一个属性。例 如在本发明实例中,pages该个List对象里包含多个部分;makedate表示制表日期、rows 作为嵌套的又一个List对象表示所有row的集合等等。当本发明实施例获取到${page, makedate}该个表达式时,将在pages中找到makedate该个变量并将其值填充到对应单元 格。本发明实施例支持任意深度的对象属性访问,比如${bean, beanl. bean2. bean3'''},同 时,本发明实施例还支持在同一个单元格中写入多个属性,比如"${row. left. je}+$ {row. ri曲t. je}",该表达式得到的将是左右两栏金额的和。
[0090] $ {bean,beanl.bean2.bean3...}可W使数据达到bean层级的无限嵌套,其中bean 层级的无限嵌套是指将一个对象的多个属性的数据集成在一个数据集合中或者将多个对 象的同一属性的数据集成在一个数据集合中。在获取数据时,首先找到beanl对应的对象, 然后动态调用beanl的getBean2()方法来得到bean2,如此直到最后一层javabean。另 一种无限嵌套的表达式可W是$ {dsl. []....字段名},该里dsl对应该S化语句执行后所 得到的结果集,□中对应的内容为筛选条件,可支持多项筛选条件,直到找到满足条件的唯 一一条行数据,再根据字段名,选择该行数据的该字段进行填充。
[00川 102 ;对模板文件进行解析,得到需进行修改的多个底层XML文件。
[0092] 在本发明实施例中,将W微软的Excel2007及W上版本为例介绍解析模板文件W 得到底层XML文件的可行方式。发明人经过研究发现依据微软在Excel2007及W上版本中 采用化enXML技术规范,当把一个Excel2007当做一个压缩文件打开的时候,Wor化ook、 化eet、Styles等信息均WXML文件存放在相应文件夹中,下面通过一个具体实例来剖析 Excel2007 (2010)XML文件的结构,然后由底层实现出发阐述。
[0093] 将一个xlsx格式的模板文件的后缀".xlsx"修改为".zip",并解压到一个文件夹 中,其文件结构如图3所示,其包括有7个底层XML文件,所谓底层XML文件即位于操作系 统最底层且类型为XML的文件,具体为;[Content_Types].xml、worlcbook.xml、worlcbook. xml.rels、sheetl.xml、sharedStrings.xml、styles,xml和app.xml。其中,
[0094] [Content_Types].xml的文档结构图如图4所示,该文件包含了压缩包中每个XML 文件的相关信息,当其他XML文件发生改变时,该个文件也要随之修改,否则将该压缩包还 原回Excel时会发生冲突。
[0095]wor化ook.xml的文档结构图如图5所示,对于该文件最需要注意的就是sheet元 素及其所有属性。根据图4所示的文档结构图,在xl/worksheets/下存在3个描述Excel 中各个sheet文件的sheetl.xml等文件,但该些文件的文件名(sheetl)并不是对应sheet 的真实名字,需要通过"r:id"该个属性,在woricbook.xml该个文件中查找每个sheet的真 实名字,即name属性的内容(Sheetl)。sheetid该个属性表示每个sheet的生成序号,假 如此时删除化eetl,sheets和化ee3的sheetid依然是2、3,若此时再新建一个化eetl,那 新建的化eetl的sheetid将改为4。当添加、删除、重命名时,一定要在该个文件中做好r; id和name的ma卵ing,W及正确的给sheetid赋值。
[0096]woricbook.xml.rels的文档结构图如图6所示,该个文件的主要作用是对每一个 重要XML文件(Target属性)赋予一个RelationshipID(Id属性),该样每个XML文件就 可W依据此ID到wor化ook.xml文件中找其对应的真实。
[0097]sheetl.xml的文档结构图如图7所示,其是电子表格中工作表的文件,本发明实 施例生成电子报表的关键,因为该工具的实现思路就是将模板文件中的sheetl.xml
的标 签、表达式替换为真实数据,最重要的就是设及底层sheet,xml文件的修改,即dimension、 sheetData、mergeCells该S个元素。其中,dimension标明了该sheet的二维区间,要根 据实际数据量做修改;shee社)ata中包含全部的行元素(row),属性r表示行号,spans表示 该行的范围,每个row又包含该行所有的cell元素,在每个cell元素中,属性r表示单元 格的坐标,属性t表示该元素的类型,当其为"S"时,表示该cell内容是一个字符串,需要 根据<V>标签的数字,到sharedStrings.xml中去找到所对应的真实数据,当不存在属性t 时,表示该是一个数字类型,<V>标签的值就是真实数据;mergeCells中的各个mergeCell 元素该sheet的每个合并单元格,属性count表示总数,属性ref标明了该合并单元格的二 维信息。
[0098]sharedStrings.xml的文档结构图如图8所示,本发明实施例得到的电子报表中 每一个sheet的所有字符串内容(真实数据),都存放在sharedStrings.xml该个文件中, 对于重复出现的内容,只W-个<si>标签来表示,属性count表示真实数据的所有字符串 的总数,属性uniqueCount表示不重复的字符串的数量;在每一个<si>标签中,t元素表 示字符串的内容,该里各个字符串有一个隐藏的属性,就是各个字符串在整个序列中的序 号,sheetl.xml中每个cell元素的<V>标签所表示的数字就与该cell元素的真实数据在 sharedStrings.xml的序号是--对应的,解析时会依据该个数字到sharedStrings.xml 中找相应位置上的值。
[0099] styles,xml的文档结构图如图9所示,该文件记录了几乎所有Excel的电子表格 相关的格式信息,包括字体、颜色、边框等等。ApacheP0I类库中复杂的格式处理使得代码 维护非常麻烦,在本发明实施例中将所有的格式信息写入模板文件中,即在模板文件中设 置好电子报表的字体、行高、列宽、合并单元格、边框、分页等信息,实际生成电子报表时,只 是读取已有格式信息,不做改动,该既省去了大量的代码工作,又使得格式问题在外部模板 文件里可W得到很好的解决。
[0100] app.xml的文档结构图如图10所示,app.xml文件中也有对于sheet数量和名称 的相关信息,Excel的电子报表有改动时,也需要在该文件中做相应修改,不然将所有底层 文件合并回原来的Excel的电子报表时,会出现冲突而失败。
[0101] 要得到最终的电子报表,则需要将真实数据写入到上述7个底层XML文件。在修改 每个底层XML文件时,除了确保改动的正确性,改动的顺序也不容疏忽。其改动顺序为:按 照由细节到整体的顺序,先修改sheetl.xml、sharedStrings.xml文件,再修改work:book. xml、work;book.xml.rels等其他剩余的五个文件。
[0102] 103 ;依据所述多个底层XML文件,对所述多个底层XML文件在程序中对应的基础 类进行初始化,得到所述多个底层XML言文件中的sheet,xml文件和sharedStrings.xml文件中指向数据的链接行。
[0103] 在对上述7个XML文件进行初始化时,可W按照上述改动顺序依次对多个底层 XML文件中在程序中对应的基础类进行初始化。本发明实施例根据底层XML文件的种 类、组件处理方式及数据封装方式等设计了包结构和继承关系,如图11所示,依次构造出 WorkBook、化eet、Row、Cell、MergeCell和化aredSt;ringsXML基础类及相关方法,对应模板 文件中用到的标签、公式和表达式分别抽象成Tag包、化rmula、Expression类;其次,针对 标签和表达式该两个模板文件中的要素,分别设置相应的transformer类,在后续将数据 写入是可W通过解析transformer类中的内容W将相应的数据写入到相应行中。
[0104] 在本发明实施例中,由于不同电子报表所需要的模板文件不同,该就要对多个底 层XML文件在程序中对应的基础类进行初始化,将所携带的填表信息录入到程序中,W满 足不同模板文件的个性化需求。
[0105] 并且在对底层XML文件进行初始化时,可W从底层XML文件中分离出指向真实数 据的链接行,每个链接行中记载有用于指向电子报表中每个单元格所需数据的组件,基于 该组件则可W获取电子报表中每个单元格所需的数据。其中链接行包括;标签行、表达式 行、公式行和其他信息行(其他信息行记录表头和表尾等固定信息),相对应的链接行中的 组件包括;标签、公式和表达式。
[0106] 在本发明实施例中,采用自上而下的方式对sheet,xml文件和sharedStrings. xml文件中的组件进行处理,得到所述多个底层可扩展标记语言文件中的sheet,xml文件 和sharedStrings.xml文件中指向数据的链接行,后续可W根据每个链接行中的组件获取 到电子报表中每个单元格所需的数据来写入,实现模板文件的代码区与真实数据相分离。 并且上述得到链接行和真实数据的方式为一种依据代码区动态执行组件生产数据的方式, 该种方式可W使得本发明实施例不对模板文件的大致框架和结构进行固定。
[0107] 而在现有技术中,通常采用jxls等工具使用上下文无关文法句型推导法将模板 展开后再处理的方式,即会根据标签等预先确定模板文件的大致框架和结构,而在实例化 每个单元格时,针对真实数据情况,再对报表结构进行调整,该样就会导致对已经分配的单 元格进行重新规划和移动,该无疑会造成大量无用的操作,出现内存占用大的情况。因此本 发明实施例采用的依据代码区动态执行组件生产数据的方式,避免了因电子报表行删除操 作而带来的大量计算资源消耗(如内存消耗),大大加快了电子报表的生成速度。
[0108] 104;获取其他底层XML文件的修改数据W及依据链接行中的每个组件获取 sheet,xml文件和sharedStrings.xml文件中每个单元格所需的真实数据,其中每个组件 用于指向电子报表中每个单元格所需数据。
[0109] 105;使用文件I0(lnput/0u化ut,输入输出)流的方式将真实数据和修改数据写 入到对应的多个底层XML文件中。
[0110] 现有技术在采用ApacheP0I类库进行Excel操作时,对应的Wori*ook(工作薄)、 化eet(工作表)、Row(行)和Cell(单元格)等对象都会存放到内存里,直到最后一条数 据实例化、整个Excel构造完毕后,才会一起写入到指定文件中,在该之前内存始终得不到 释放。ApacheP0I的该种实现机制决定了在处理大数据量电子报表生成时会很容易报出内 存溢出异常,使其不适用于银行类等大数据量电子报表的生成。而在本发明实施例中,提供 写入数据的一种可行方式,使其能够解决现有技术的上述问题,如图12所示,其介绍如何 使用文件10流的方式将真实数据和修改数据写入到对应的多个底层XML文件中,可W包括 W下步骤:
[0111] 1051 ;将真实数据和修改数据写入到内存中。
[0112] 1052 ;当内存中数据的数据量大于第一预设值时,从内存中获取数据量为第二预 设值的数据。
[0113] 1053;使用文件10流的方式将从内存中获取的数据写入到对应的多个底层XML文 件中。在本发明实施例中图4和图10为需要修改的7个底层XML文件,每个附图中矩形方 框所框住区域为从步骤1052中获取的数据写入的区域,采用文件10流的方式可W将获取 的数据写入到对应的区域中。
[0114] 在将真实数据和修改数据写入到对应的多个底层XML文件中同时,释放所获取的 数据占用的内存,该样可W有效的降低本发明对系统资源的开销,不需要在进行大数据量 处理时专口设置JVM,性能稳定。其中第一预设值为在内存中缓存数据的数据量上限,第二 预设值可W是一次写入数据使系统资源开销最优情况下的数据量上限。例如第一预设值可 W为200行数据,相应的第二预设值为100行数据。
[0115] 即在写入数据时保留在内存中的数据上限为200行,当内存中存放的数据量达到 200行时,一次性将其中100行通过文件10流写入到对应的底层XML文件中,并释放该部分 数据所占用的内存。该样可W避免现有技术将所有数据都获取后保存在内存中再一次性导 入的做法,有效的降低本发明实施例对系统资源尤其是内存的开销,不需要在进行大数据 量处理时专口设置JVM从而使其能够适用于大数据量电子报表的生成,且性能稳定。
[0116] 106;将写入数据的多个底层XML文件进行压缩,并将压缩后得到的压缩包的文件 后缀名修改为电子报表对应的后缀名,W得到电子报表。
[0117]在本发明实施例中,电子报表对应的后缀名是设备中所安装的表格文件的后缀 名,例如可W是.Xlsx或者.et,其中.et是WS中电子报表的后缀名,当将压缩包的文件后 缀名修改为电子报表对应的后缀名之后,电子报表被自动生成。如图13所示,为将图2所 示模板文件经过图1所示方法处理后得到的电子报表。
[0118]通过本发明实施例提供的电子报表生成方法,在获取到电子报表对应的模板文件 后,可W对模板文件进行解析,得到需进行修改的多个底层XML文件,然后通过对其进行一 系列处理后得到一压缩包,再将该压缩包的文件后缀名修改为所述电子报表对应的后缀 名,W得到所述电子报表,因此由Microsoft开发的WXML为基础的电子表格都可W采用本 发明实施例提供的电子报表生成方法得到,并且从本发明实施例提供的电子报表生成方法 所示流程来看,其在生成电子报表过程中并未基于ApacheP0I类库等现有技术,而是一种 新的有别于现有基于ApacheP0I类库等现有技术的电子报表生成方式。
[0119]进一步通过本发明实施例提供的电子报表生成方法对财政日报的生成进行测试 后得到如表1所示数据,所有测试均不需要增加JVMQavaVirtualMachine,化va虚拟 机),在默认值下即可成功执行程序。
[0120] 表1报表生成参数表
[0121]
[0122] 按照现有技术生成相同数据量的报表时,财政日报、年度代理量计算报表需要 20-30分钟,利息计算报表需要1-2个小时,在时间对比上,无疑本发明实施例将效率提升 了数倍;W往的报表文件格式为html,在维护及格式要求上,空间都十分有限,而本发明实 施例可W生成Excel2007的电子报表,无论是后期维护,还是格式美观均能满足财政部、人 民银行对电子报表提出的要求。
[0123] 此外,由于
商业应用系统中真实数据的种类众多,所W会存在某些真实数据不能 满足模板文件的数据要求的情况,在该种情况下需要判断从数据源获取到的真实数据是否 可W直接写入对应的所述多个底层可扩展标记语言文件中;如果是,使用文件10流的方式 将真实数据写入到对应的所述多个底层XML文件中;如果否,对从数据源中获取的真实数 据进行处理W使其可W写入到对应的所述多个底层可扩展标记语言文件中,并使用文件10 流的方式将处理后的真实数据写入到对应的所述多个底层XML文件中。
[0124] 其中,数据源可W是数据库或者文件,当数据源是数据库时,使用S化标签获取数 据库中的真实数据,当数据源是文件时,使用File标签获取文件中的真实数据。S化标签为 用于指向数据库的组件,File标签为用于指向文件的组件。
[0125]W图14为例,该图14为中央授权支付月度明细表对应的模板文件,该里除了用到 了ForEach和If两个标签W外,还用到了Attribute和S化两个标签,下面介绍一下该两 个标签的使用。
[0126]Attribute标签
[0127]在常见的JDBCQavaDataBaseConnectivity,java数据库连接)数据库操 作中,经常遇到中文是否需要转码的处理问题,从数据库中读出的中文信息,需要经过 IS0(Isolation,镜像文件格式)到GBK(QiineseInternalCodeSpecification,汉字内码 扩展规范)的转码,才能使中文正常显示,同理,在通过JDBC执行S化语句时,还需要将SQL 语句中的中文做G服到ISO的转码,才能使数据库正确的识别。该标签中,transcode属性 表示本次报表生成过程中,是否需要对上述两种情况进行转码,值为"true"时,表示需要该 一层转码操作,否则不需要进行转码操作。
[012引 S化标签
[0129] 当从数据库中获取真实数据直接填入模板文件时,该标签是最重要的处理标签, 因为整个数据源的获取都依托于该标签sql属性中的S化语句,比如标签为<FAP:S化ds="dsl"sql="selectname,sex,collegefromStudentMessage"/〉,程序会自动去数据 库中获取S化语句的执行结果,并存为名叫dsl的结果集,在模板文件中填入${dsl.name}, 表示填入的值是该结果集中一条数据的name字段,该样可W直观的将表名、字段名同模板 文件的表达式联系起来。
[0130] 图14所示的中央授权支付月度明细表对应的模板文件在经过图1所示的电子报 表生成方法的处理后,得到如图15所示的中央授权支付月度明细表。在得到该中央授权支 付月度明细表时,无需对获取到的真实数据进行处理,就可W直接将其写入到底层XML文 件中。
[0131] 另外,本发明实施例提供的电子报表生成方法可W基于java创建,在使用时也可 W实现跨平台使用,并且其提供众多变量、表达式、标签、公式的使用使得模板文件的写入 功能非常强大,进一步还可W提供java开发耶i(ApplicationProgramInte计ace,应用程 序编程接口),该api用于实现后台的处理。
[0132] 对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但 是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某 些步骤可W采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描 述的实施例均属于优选实施例,所设及的动作和模块并不一定是本发明所必须的。
[0133] 与上述方法实施例相对应,本发明实施例还提供一种电子报表生成装置,其结构 示意图如图16所示,可W包括;第一获取单元11、解析单元12、初始化单元13、第二获取单 元14、写入单元15和修改单元16。其中,
[0134] 第一获取单元11,用于获取所述电子报表对应的模板文件。其中模板文件为预生 成的某种类型的电子报表的一个通用文件,通过采用下述步骤对通用文件进行处理则可W 得到电子报表。该样对于同一种类型的电子报表来说可W使用同一个模板文件,也就是说 本发明实施例支持套用模板文件,W减少程序端的格式操作,将电子报表直接与数据库联 系。
[0135] 在本发明实施例中,模板文件包括;表头、数据部分和表尾,数据部分至少包括标 签和W数据对象为基础的表达式两部分,模板文件中表头和表尾在电子报表中也要存在, 其具体信息与模板文件中的信息相同,因此可W将表头和表位对应的具体信息写入到后续 的底层XML文件中即可,相对于现有技术来说,降低对模板文件操作的复杂度。模板文件的 示意图可W参阅图2所示,具体对图2所示的模板文件的描述可W参阅方法实施例部分说 明,对此不再进行阐述。
[0136] 解析单元12,用于对所述模板文件进行解析,得到需进行修改的多个底层XML文 件。其解析过程可W是将模板文件的后缀修改为某种压缩格式的后缀,在对其进行解压得 到一个包括需进行修改的多个底层XML文件的文件夹,具体过程W及多个底层XML文件的 文档结构图可W参阅上述方法实施例中步骤102处的相关说明,对此不再进行阐述。
[0137] 初始化单元13,用于依据所述多个底层XML文件,对所述多个底层XML文件在 程序中对应的基础类进行初始化,得到所述多个底层XML文件中的sheet,xml文件和 sharedStrings.xml文件中指向数据的链接行,其中所述sheet,xml文件为电子表格中工 作表的文件,sharedStrings.xml文件用于存储所述电子报表中每一个sheet的真实数据。 [013引在对上述7个XML文件进行初始化时,可W按照上述改动顺序依次对多个底层XML 文件中在程序中对应的基础类进行初始化。本发明实施例根据底层XML文件的种类、组件 处理方式及数据封装方式等设计了包结构和继承关系,依次构造出WorkBook、化eet、Row、 Cell、MergeCell和化aredStringsXML基础类及相关方法,对应模板文件中用到的标签、公 式和表达式分别抽象成Tag包、化rmula、Expression类;其次,针对标签和表达式该两个 模板文件中的要素,分别设置相应的transformer类,在后续将数据写入是可W通过解析 transformer类中的内容W将相应的数据写入到相应行中。
[0139] 在本发明实施例中,由于不同电子报表所需要的模板文件不同,该就要对多个底 层XML文件在程序中对应的基础类进行初始化,将所携带的填表信息录入到程序中,W满 足不同模板文件的个性化需求。并且在对底层XML文件进行初始化时,可W从底层XML文 件中分离出指向真实数据的链接行,每个链接行中记载有用于指向电子报表中每个单元格 所需数据的组件,基于该组件则可W获取电子报表中每个单元格所需的数据。其中链接行 包括;标签行、表达式行、公式行和其他信息行(其他信息行记录表头和表尾等固定信息), 相对应的链接行中的组件包括;标签、公式和表达式。
[0140] 在本发明实施例中,初始化单元13采用自上而下的方式对sheet,xml文件和 sharedStrings.xml文件中的组件进行处理,得到所述多个底层可扩展标记语言文件中的 sheet,xml文件和sharedStrings.xml文件中指向数据的链接行,后续可W根据每个链接 行中的组件获取到电子报表中每个单元格所需的数据来写入,实现模板文件的代码区与真 实数据相分离。并且上述得到链接行和真实数据的方式为一种依据代码区动态执行组件 生产数据的方式,该种方式可W使得本发明实施例不对模板文件的大致框架和结构进行固 定。
[0141] 而在现有技术中,通常采用jxls等工具使用上下文无关文法句型推导法将模板 展开后再处理的方式,即会根据标签等预先确定模板文件的大致框架和结构,而在实例化 每个单元格时,针对真实数据情况,再对报表结构进行调整,该样就会导致对已经分配的单 元格进行重新规划和移动,该无疑会造成大量无用的操作,出现内存占用大的情况。因此本 发明实施例采用的依据代码区动态执行组件生产数据的方式,避免了因电子报表行删除操 作而带来的大量计算资源消耗,大大加快了电子报表的生成速度。
[0142] 第二获取单元14,用于获取其他底层XML文件的修改数据W及依据所述链接行中 的每个组件获取所述sheet,xml文件和sharedStrings.xml文件中每个单元格所需的真实 数据,其中每个组件用于指向所述电子报表中每个单元格所需数据。
[0143] 写入单元15,用于使用文件10流的方式将所述真实数据和所述修改数据写入到 对应的所述多个底层XML文件中。
[0144] 在本发明实施例中,写入单元15可W先将真实数据和修改数据写入到内存中,然 后再从内存中写入到对应的多个底层XML文件中。例如图17所示的写入单元15的结构示 意图,可W包括;第一写入子单元151、获取子单元152和第二写入子单元153,其中:
[0145] 第一写入子单元151,用于将所述真实数据和所述修改数据写入到内存中。
[0146] 获取子单元152,用于当所述内存中所述数据的数据量大于第一预设值时,从所述 内存中获取数据量为第二预设值的数据。
[0147] 第二写入子单元153,用于使用文件10流的方式将从内存中获取的数据写入到对 应的所述多个底层XML文件中。
[0148] 在本发明实施例中图4和图10为需要修改的7个底层XML文件,每个附图中矩形 方框所框住区域为获取子单元152中获取的数据写入的区域,采用文件10流的方式可W将 获取的数据写入到对应的区域中。
[0149] 在将真实数据和修改数据写入到对应的多个底层XML文件中同时,释放所获取的 数据占用的内存,该样可W有效的降低本发明对系统资源的开销,不需要在进行大数据量 处理时专口设置JVM,性能稳定。其中第一预设值为在内存中缓存数据的数据量上限,第二 预设值可W是一次写入数据使系统资源开销最优情况下的数据量上限。例如第一预设值可 W为200行数据,相应的第二预设值为100行数据。
[0150] 即在写入数据时保留在内存中的数据上限为200行,当内存中存放的数据量达到 200行时,一次性将其中100行通过文件10流写入到对应的底层XML文件中,并释放该部分 数据所占用的内存。该样可W避免现有技术将所有数据都获取后保存在内存中再一次性导 入的做法,有效的降低本发明对系统资源的开销,不需要在进行大数据量处理时专口设置 JVM,性能稳定。
[0151] 修改单元16,用于将写入数据的多个底层XML文件进行压缩,并将压缩后得到的 压缩包的文件后缀名修改为所述电子报表对应的后缀名,W得到所述电子报表。
[0152] 在本发明实施例中,电子报表对应的后缀名
是设备中所安装的表格文件的后缀 名,例如可W是.Xlsx或者.et,其中.et是WS中电子报表的后缀名,当将压缩包的文件后 缀名修改为电子报表对应的后缀名之后,电子报表被自动生成。如图13所示,为将图2所 示模板文件经过图1所示方法处理后得到的电子报表。
[0153] 通过本发明实施例提供的电子报表生成装置,在获取到电子报表对应的模板文件 后,可W对模板文件进行解析,得到需进行修改的多个底层XML文件,然后通过对其进行一 系列处理后得到一压缩包,再将该压缩包的文件后缀名修改为所述电子报表对应的后缀 名,W得到所述电子报表,因此由Microsoft开发的WXML为基础的电子表格都可W采用本 发明实施例提供的电子报表生成装置得到,并且从本发明实施例提供的电子报表生成装置 所示流程来看,其在生成电子报表过程中并未基于ApacheP0I类库等现有技术,而是一种 新的有别于现有基于ApacheP0I类库等现有技术的电子报表生成方式。
[0154] 此外,由于商业应用系统中真实数据的种类众多,所W会存在某些真实数据不能 满足模板文件的数据要求的情况,在该种情况下需要写入单元15进行判断后再写入,如图 18所示的写入单元15的另一种结构示意图,可W包括;判断子单元154、第S写入子单元 155和处理子单元156,其中;
[0155] 判断子单元154,用于判断从数据源获取到的真实数据是否可W直接写入对应的 所述多个底层XML文件中。
[0156] 第=写入子单元155,用于当所述判断子单元判断从数据源获取到的真实数据可 W直接写入对应的所述多个底层XML文件中时,使用文件10流的方式将所述真实数据写入 到对应的所述多个底层XML文件中。
[0157] 处理子单元156,用于当所述判断子单元判断从数据源获取到的真实数据不可W 直接写入对应的所述多个底层XML文件中时,对从数据源中获取的真实数据进行处理W使 其可W写入到对应的所述多个底层XML文件中,并使用文件10流的方式将处理后的真实数 据写入到对应的所述多个底层XML文件中。
[015引其中,数据源可W是数据库或者文件,当数据源是数据库时,使用S化标签获取数 据库中的真实数据,当数据源是文件时,使用File标签获取文件中的真实数据。S化标签为 用于指向数据库的组件,File标签为用于指向文件的组件。
[0159] 需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重 点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。 对于装置类实施例而言,由于其与方法实施例基本相似,所W描述的比较简单,相关之处参 见方法实施例的部分说明即可。
[0160] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将 一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示该些实体或操作 之间存在任何该种实际的关系或者顺序。而且,术语"包括"、"包含"或者其任何其他变体 意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括 那些要素,而且还包括没有明确列出的其他要素,或者是还包括为该种过程、方法、物品或 者设备所固有的要素。在没有更多限制的情况下,由语句"包括一个……"限定的要素,并 不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0161] 对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对该 些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可 W在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限 制于本文所示的该些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的 范围。
【主权项】
1. 一种电子报表生成方法,其特征在于,所述方法包括: 获取所述电子报表对应的模板文件; 对所述模板文件进行解析,得到需进行修改的多个底层可扩展标记语言文件; 依据所述多个底层可扩展标记语言文件,对所述多个底层可扩展标记语言文件在程序 中对应的基础类进行初始化,得到所述多个底层可扩展标记语言文件中的sheet, xml文件 和sharedStrings. xml文件中指向数据的链接行,其中所述sheet, xml文件为电子表格中 工作表的文件,sharedStrings. xml文件用于存储所述电子报表中每一个sheet的真实数 据; 获取其他底层可扩展标记语言文件的修改数据以及依据所述链接行中的每个组件获 取所述sheet, xml文件和sharedStrings. xml文件中每个单元格所需的真实数据,其中每 个组件用于指向所述电子报表中每个单元格所需数据; 使用文件输入输出流的方式将所述真实数据和所述修改数据写入到对应的所述多个 底层可扩展标记语言文件中; 将写入数据的多个底层可扩展标记语言文件进行压缩,并将压缩后得到的压缩包的文 件后缀名修改为所述电子报表对应的后缀名,以得到所述电子报表。2. 根据权利要求1所述的方法,其特征在于,所述使用文件输入输出流的方式将所述 真实数据和所述修改数据写入到对应的所述多个底层可扩展标记语言文件中,包括: 将所述真实数据和所述修改数据写入到内存中; 当所述内存中所述数据的数据量大于第一预设值时,从所述内存中获取数据量为第二 预设值的数据; 使用文件输入输出流的方式将从内存中获取的数据写入到对应的所述多个底层可扩 展标记语言文件中。3. 根据权利要求1所述的方法,其特征在于,所述依据所述多个底层可扩展标记语言 文件,对所述多个底层可扩展标记语言文件在程序中对应的基础类进行初始化,得到所述 多个底层可扩展标记语言文件中的sheet, xml文件和sharedStrings. xml文件中指向数据 的链接行,包括: 依据所述多个底层可扩展标记语言文件,对所述多个底层可扩展标记语言文件在程序 中对应的基础类进行初始化,并采用自上而下的方式对sheet, xml文件和sharedStrings. xml文件中的组件进行处理,得到所述多个底层可扩展标记语言文件中的sheet, xml文件 和sharedStrings. xml文件中指向数据的链接行。4. 根据权利要求1所述的方法,其特征在于,所述使用文件输入输出流的方式将所述 真实数据写入到对应的所述多个底层可扩展标记语言文件中,包括: 判断从数据源获取到的真实数据是否可以直接写入对应的所述多个底层可扩展标记 语言文件中; 如果是,使用文件输入输出流的方式将所述真实数据写入到对应的所述多个底层可扩 展标记语言文件中; 如果否,对从数据源中获取的真实数据进行处理以使其可以写入到对应的所述多个底 层可扩展标记语言文件中,并使用文件输入输出流的方式将处理后的真实数据写入到对应 的所述多个底层可扩展标记语言文件中。5. 根据权利要求4所述的方法,其特征在于,当数据源是数据库时,使用SQL标签获取 数据库中的真实数据,当数据源是文件时,使用File标签获取文件中的真实数据。6. -种电子报表生成装置,其特征在于,所述装置包括: 第一获取单元,用于获取所述电子报表对应的模板文件; 解析单元,用于对所述模板文件进行解析,得到需进行修改的多个底层可扩展标记语 言文件; 初始化单元,用于依据所述多个底层可扩展标记语言文件,对所述多个底层可扩展标 记语言文件在程序中对应的基础类进行初始化,得到所述多个底层可扩展标记语言文件中 的sheet, xml文件和sharedStrings. xml文件中指向数据的链接行,其中所述sheet, xml 文件为电子表格中工作表的文件,sharedStrings. xml文件用于存储所述电子报表中每一 个sheet的真实数据; 第二获取单元,用于获取其他底层可扩展标记语言文件的修改数据以及依据所述链接 行中的每个组件获取所述sheet, xml文件和sharedStrings. xml文件中每个单元格所需的 真实数据,其中每个组件用于指向所述电子报表中每个单元格所需数据; 写入单元,用于使用文件输入输出流的方式将所述真实数据和所述修改数据写入到对 应的所述多个底层可扩展标记语言文件中; 修改单元,用于将写入数据的多个底层可扩展标记语言文件进行压缩,并将压缩后得 到的压缩包的文件后缀名修改为所述电子报表对应的后缀名,以得到所述电子报表。7. 根据权利要求6所述的装置,其特征在于,所述写入单元包括: 第一写入子单元,用于将所述真实数据和所述修改数据写入到内存中; 获取子单元,用于当所述内存中所述数据的数据量大于第一预设值时,从所述内存中 获取数据量为第二预设值的数据; 第二写入子单元,用于使用文件输入输出流的方式将从内存中获取的数据写入到对应 的所述多个底层可扩展标记语言文件中。8. 根据权利要求6所述的装置,其特征在于,所述初始化单元具体用于:依据所述多个 底层可扩展标记语言文件,对所述多个底层可扩展标记语言文件在程序中对应的基础类进 行初始化,并采用自上而下的方式对sheet, xml文件和sharedStrings. xml文件中的组件 进行处理,得到所述多个底层可扩展标记语言文件中的sheet, xml文件和sharedStrings. xml文件中指向数据的链接行。9. 根据权利要求6所述的装置,其特征在于,所述写入单元包括: 判断子单元,用于判断从数据源获取到的真实数据是否可以直接写入对应的所述多个 底层可扩展标记语言文件中; 第三写入子单元,用于当所述判断子单元判断从数据源获取到的真实数据可以直接写 入对应的所述多个底层可扩展标记语言文件中时,使用文件输入输出流的方式将所述真实 数据写入到对应的所述多个底层可扩展标记语言文件中; 处理子单元,用于当所述判断子单元判断从数据源获取到的真实数据不可以直接写入 对应的所述多个底层可扩展标记语言文件中时,对从数据源中获取的真实数据进行处理以 使其可以写入到对应的所述多个底层可扩展标记语言文件中,并使用文件输入输出流的方 式将处理后的真实数据写入到对应的所述多个底层可扩展标记语言文件中。
【专利摘要】本发明提供一种电子报表生成方法及装置,在获取到电子报表对应的模板文件后,可以对模板文件进行解析,得到需进行修改的多个底层XML文件,然后通过对其进行一系列处理后得到一压缩包,再将该压缩包的文件后缀名修改为所述电子报表对应的后缀名,以得到所述电子报表,因此由Microsoft开发的以XML为基础的电子表格都可以采用本发明实施例提供的电子报表生成方法得到,从而提高本发明实施例所提供方法的通用性。
【IPC分类】G06F9/44
【公开号】CN104881275
【申请号】CN201510071247
【发明人】丁慧, 焦健
【申请人】中国农业银行股份有限公司
【公开日】2015年9月2日
【申请日】2015年2月11日
转载请注明原文地址:https://www.famiwei.com/read-8138799.html