APP下载

基于XLS模板的城市地下管线成果报表自动生成方法研究

2018-01-09蒋利韩李涛刘建勋

软件导刊 2017年12期
关键词:报表表格组件

蒋利+韩李涛+刘建勋

摘要:城市地下管线探测成果上交时,探测管线成果数据需按照规定的格式生成报表。数据成果报表存在许多单元格合并、表格跨页、跨页保留表头等要求,对此,提出一种基于XLS模板的地下管线成果数据生成方法。先结合规范要求自定义报表模板,然后在管线成果数据与模板单元之间建立关联,最后基于NPOI组件库生成符合规范要求的城市地下管线数据成果Excel报表。实验结果表明,该方法能够生成符合规范要求的复杂Excel报表。

关键词:Excel报表;XLS模板;地下管线;NPOI

DOIDOI:10.11907/rjdk.172024

中图分类号:TP301

文献标识码:A 文章编号:1672-7800(2017)012-0009-03

Abstract:When the results of urban underground pipeline detection are submitted, the achievements of detecting pipeline data to generate report forms in accordance with the prescribed format. For the productive report forms of urban underground pipeline data have complex demand such as merging cells、generating forms across the page and retaining headers across the page, this paper proposes a method based on the XLS template to generate report forms of urban underground pipeline data, firstly, designing custom report template, then establishing connections between the results of pipeline data and template units, finally, generating Excel reports of urban underground pipeline result data based on NPOI library normatively. The experimental results show that the method can generate complex Excel report forms which meet the specification requirements.

Key Words:Excel report forms; XLS templates; underground pipeline; NPOI

0 引言

自动生成数据报表不仅是城市地下管线数据上报系统的必备功能之一,而且在许多管理应用系统都需要将大量数据成果按照自定义格式生成Excel报表,从而减轻劳动量,提高生产效率。常用的Excel报表生成方式有两种:①调用Office的COM组件进行报表导出[1];②调用NPOI[2]第三方组件进行报表导出。

第一种方式需要在安装Office软件的前提下,调用Office的COM组件、引入Microsoft Excel object library完成導出工作[3-5],该过程冗杂,进程较慢,若要完成多数据导出或多用户操作,需要产生多个Office进程,这一缺陷在导出自定义复杂表格的时候颇为显著[6]。

第二种方式依赖NPOI组件库,能够脱离Excel相关组件,可同时支持Web应用导出及本地应用导出Excel。利用NPOI还可进行Excel报表样式、字体、文字位置等设置[7],生成复杂报表更为容易。文献[6]、文献[7]利用NPOI组件实现了对规则数据、简单样式报表的自动生成与导出,主要利用NPOI组件直接创建工作簿,然后初始化工作簿并进行规则数据的插入。文献[8]引入Excel模板进行数据报表生成,能够生成复杂格式的报表,表头可以合并单元格,但表格主体数据行格式较为简单,无单元合并问题,没有实现表格循环。

城市地下管线成果报表格式要求较为复杂,且需导出的成果数据量较多。因此,本文在对比分析上述方法的基础上,设计一种基于Excel模板调用NPOI组件进行城市地下管线成果报表自动生成的方法。

1 报表生成设计

1.1 报表格式分析

城市地下管线成果数据Excel报表格式较为复杂,如图1所示。

(1)Excel报表不单纯解决如何合并表头单元格实现复杂表头的问题,表格表头中包含的数值并非一成不变,标题以及管线信息标题等为不变的数据量,而空格处的信息会随着报表的下次循环而发生相应改变。

(2)除表头外,表格主体数据行中的数据填充也不仅仅是将数据按照规则顺序填充。数据本身是管线的相关属性信息,包含点号、连接点信息以及距离等信息。点号之间有顺序的先后关系。管线种类多样,导出的管线信息报表需要将不同种类管线信息按照管线方向进行归纳整理,而距离等信息需要在单元格之间进行相关计算。

(3)在表尾部分,随着下一表格的生成,还需进行相关注记与分页、添加备注、总长度信息以及增添检查者等相关变量信息。

1.2 技术流程

鉴于地下管线成果报表格式的复杂性,选择基于xls模板的报表生成方法,将导出数据与Excel格式相互分离。在开发过程中,将数据报表的表格样式、字体样式等不变内容由Excel模板实现,而报表中的管线数据、探测单位信息等变化内容由程序中的代码实现填入。这样,在程序开发过程中只需关心变化的管线数据,而不必花费精力关注Excel表格样式,从而实现高效导出表格,如图2所示。

2 导出表格

城市地下管线成果表自动生成系统开发环境:Visual Studio2010,基于.net Framework 4.0,开发语言为C#,实现包括模板制作、NPOI引用添加、数据准备、基于NPOI的报表生成几个关键步骤。

2.1 制作Excel模板

模板制作较为简单,只需制作与要求格式相同的表格即可。无论是表头还是表尾的表格合并,只需要在表格工具中利用合并单元格功能完成。在需要填充数据内容的单元格中添加参数变量,设置参数变量的格式、数值类型,利用Excel工具或其它表格制作工具都行,只需保存的格式为xls文件即可。地下管线导出制作模板如图3所示。

2.2 添加NPOI引用

在进行开发前需要调用第三方NPOI组件。在NPOI官方网站中下载相关的DLL文件,在开发平台的解决方案管理器中,添加DLL文件,添加的文件有NPOI、NPOI.OpenXml4Net、NPOI.OOXML、NPOI.OpenXmlFormats共4个DLL文件。添加完成后需要添加相关的命名空间。

2.3 数据准备

城市地下管线数据存储在Acess数据库中,导出工作前需要进行数据库连接。城市地下管线数据库包含污水、雨水、电信、天然气等许多类型的管线数据,每一类管线数据包含一个管点表与管段表。为了方便管线成果报表自动生成,在数据导出前需要进行数据准备工作。构造TablePoints和TableLines,分别按照管线相关顺序遍历数据。准备工作如下:

(1)读入成果表管线连接关系文件。地下管线数据库中管段类型多样,包含污水管线、雨水、电信、天然气等多类管线,各类管线连接方式多样。所以,为了方便管线数据导出,在导出前,需要进行管线连接关系文件的读入。在系统中,该文件可由用户自定义输入,对管线的连接进行自定义编辑。

(2)TablePoints数据的填充。数据的准备工作主要以管点号为依据展开,建立管点汇总数组,对管点数目与类型汇总,依据管点号从DataGridView中获取相应的数据填充。

(3)TableLines数据填充。在初始化TableLines时,其行数为TablePoints行数的2倍,填充过程分3步:①对没有前驱管点的第一个管点进行处理;②对既有前驱管点进行后继管点、中间管点处理;③对后继管点的最后管点进行处理。

(4)补齐TablePoints和TableLines,使其行数正好为单个表格行数的整倍数,以满足每页为同一类型管段数据要求。

2.4 NPOI组件导出Excel表格关键技术

(1)读取Excel模板,获取IWorkbook对象。

using (var fileStream=new FileStream(file, FileMode.Open, FileAccess.Read))

(2)关联数据到导出模板。对模板中的各个参数常量进行定义,将数据准备阶段生成的两个Table表格中的数据绑定到模板参数变量中。

2.5 成果展示

基于XLS模板,结合NPOI技术批量自动生成城市地下管线成果报表如图4所示。报表包含类型为雨水管道相关信息,表头为调查单位、个人相关信息以及管线类型等信息;表格主体数据行中包含管点的连接方式、距离、埋深、材质等信息,每一页表格中包含的管段种类都为同一类型。管点的前驱连接点与后继连接点在表格中都能体现,管段之间以空白单元格隔开。当本页表格容量无法满足此类型管点个数时,将会循环到下一页,以此实现数据的批量导出。表尾部分包含页码、备注以及统计信息。该表格展现了基于XLS模板结合NPOI技术,批量导出自定义报表的效果。

3 结语

本文基于C#语言开发平台,基于XLS模板并结合NPOI组件实现了Excel表格的导出。地下管线成果数据导出案例证明,模板与NPOI组件的结合可以高效实现海量数据的循环,满足对导出表格格式的复杂要求。在工程实践项目中运用本文方法,可以高效处理批量数据导出工作。

参考文献:

[1] 蔡小艳,李龙腾,葛玉,等.基于C#的Excel数据导入导出研究与实现[J].智能计算机与应用,2014(5):83-85.

[2] 陈峰.使用NPOI有效读写Office文件[J].金融科技时代,2011(6):69-70.

[3] 李菲菲,刘天时.一种基于ASP.NET的Excel报表导入与导出方法[J].软件导刊,2012(8):29-30.

[4] 康维虎,柳浪涛.基于.NET的Excel报表设计与实现[J].软件导刊,2016(5):101-103.

[5] 苏庆,李忠良,吴伟民.在C#.NET下实现数据导入Excel的方法研究[J].计算机与现代化,2011(4):29-31.

[6] 昌兆文,刘湖平,曾绍军.基于NPOI导出Excel文件的研究与实现[J].中国管理信息化,2013(15):93-94.

[7] 张丽妮.Excel技術在大学生创新项目管理中的应用[J].软件导刊,2011(3):58-60.

[8] 冯洋,王仲锋.NPOI在开发Excel报表中的应用[J].长春工程学院学报:自然科学版,2015(2):109-121.

(责任编辑:杜能钢)

猜你喜欢

报表表格组件
《现代临床医学》来稿表格要求
无人机智能巡检在光伏电站组件诊断中的应用
《现代临床医学》来稿表格要求
新型碎边剪刀盘组件
统计表格的要求
U盾外壳组件注塑模具设计
LabWindows/CVI中Excel报表技术研究
从三大报表读懂养猪人的成绩单
风起新一代光伏组件膜层:SSG纳米自清洁膜层
本刊表格的要求