admin 管理员组文章数量: 1086019
2024年4月20日发(作者:mysql 单个备份数据库)
基于XML的地下管线成果表生成方法
樊伟平
【摘 要】本文通过对比现行的地下成果表生成方法,在对Excel和XMl文件研究的
基础上,提出了一种基于XML格式模板解析的地下管线成果表生成方法,通过本方
法,可以高效批量的导出对格式要求复杂的地下管线成果表.
【期刊名称】《城市勘测》
【年(卷),期】2018(000)0z1
【总页数】4页(P298-301)
【关键词】地下管线成果表;Excel;XML;VBA
【作 者】樊伟平
【作者单位】中煤(西安)地下空间科技发展有限公司,西安 710199
【正文语种】中 文
【中图分类】P209
1 引 言
地下管线数据对于城市管理、规划有着非常重要的意义,现阶段,我国大部分城市
已经进行了地下管线普查工作,地下管线普查阶段的主要数据成果有地下管线成果
表,地下管线成果图,地下管线成果库。地下管线成果表的编制是地下管线普查数
据处理的一项重要工作,地下管线成果表一般要求以Excel的xls格式保存,以城
市基本地形图图幅为单位分专业进行整理编制,并装订成册。每一图幅各专业管线
成果的装订顺序应按给水、排水、燃气、热力、电力、电信、工业管道、其他专业
管线顺序执行,成果表装订成册后应在封面标注图幅号并编写制表说明[1]。面
对大量的地下管线数据,设计一个表格样式可以由用户灵活设计,通用的成果表生
成系统是一个具有实际意义的研究课题。
2 成果表生成现状
现阶段,地下管线成果表基本上结束了人工手动编辑的落后方法,地下管线成果表
的生成都是基于电脑程序自动化完成。常用的Excel报表生成方式有三种:①调用
Office的COM组件进行报表导出[2];②利用第三方软件库;③利用VBA生
成Excel文件。
第一种方式需要在安装 Office软件的前提下,调用Office的COM组件、引入
Microsoft Excel Object Library完成导出工作[3-5],该过程冗杂,进程较慢,
若要完成多数据导出或多用户操作,需要产生多个Excel进程,这一缺陷在导出自
定义复杂表格的时候颇为显著;第二种方法依赖于第三方软件或库,第三方软件或
库种类众多且大部分为商用,无法由程序人员自由控制;第三种方法需要安装
Office软件,利VBA生成文件,但在大数据量且需要对不同格式的单元格渲染时,
运行速度较慢,并且不易和已有基于非VB语言建设的地下管线数据处理系统无缝
整合。
XML是一种可扩展性标记语言,其自描述性使其非常适用于不同应用间的数据交
换,而且这种交换是不以预先规定一组数据结构定义为前提。XML最大的优点是
它对数据描述和数据传送的能力,因此具备很强的开放性[6]。从 Office 2003
系列开始,微软增加了对 XML技术的支持。本文在对XML和Excel的进行深入
研究后,提出一种基于XML解析技术高效自动生成xls格式地下管线成果表的方
法,采用模板技术,数据与表现分离,以XML为载体经过解析进行动态报表的生
成。
3 成果表生成设计
3.1 XML 格式的 Excel模板文件结构分析
(1)xls格式成果表模板分析
地下管线成果表包括封面、制表说明、目录、成果表模板工作表,格式也比较复杂,
如图1。
图1 xls格式成果表模板
其中,制表说明的内容比较固定,其余三个工作表都有根据数据变化的部分。成果
表模板工作表的字体大小,单元格边框,单元格合并,单元格对齐模式等格式变化
较多,还包括复杂的表头,以及包括页码及检查员等随数据变动的页脚。
(2)XML格式成果表模板分析
Excel提供了导出XML格式的功能,通过将成果表导出为XML格式,如图2。
图2 XML格式成果表模板
通过XML格式成果表模板可以看到,Workbook和 Worksheet 分别是工作薄和
工作表标签,每个工作表中包 含一个表格(Table),表格中包含若干行(Row),
每行包含若干个单元格 (Cell)。其中单元格的样式由Cell标签的属性“ss:
StyleID”进行描述,Cell的内层标签 Data 的属性“ss:Type”描述数据类型,
标签内容描述数据值[6]。XML格式的 Excel文档结构树的简明结构如图3所示。
图3 XML 格式的 Excel文档结构图
3.2 技术流程
技术流程图如图4。
基于XML 模板的成果表生成方法,能将管线数据与格式相分离。在开发过程中,
将成果表的表格样式、字体样式等格式内容由Excel成果表模板实现,通过基于转
换的XML成果表模板的解析,对于变化部分如管线数据、探测单位信息、图幅信
息、页码等由程序中的代码实现填入。这样,在程序开发过程中只需关心变化的管
线数据,而不必花费精力关注Excel表格样式,利用XMl文档读取速度较快的优
点,从而实现高效导出表格。
图4 流程图
3.3 功能实现
(1)界面设计
界面设计需要考虑数据组织的灵活性,需要提供包括管线类型选择,单元格填充数
据组织的界面接口,可以指定模版,对表头,最大行数,表头行数可以自定义输入,
数据保存时可以指定文件名格式,可以自由选择数据范围,主要的数据导出界面如
图5。
图5 数据导出界面
(2)代码设计
主要代码及注释如下:
1. List
//准备数据
2. List
3. string arrFields= GetInXlsFields();
4. DataTable dtSheet = GetDataTablePer WorkSheet(pipeZLMC,
limitFields,limitValue);
5. XmlDocument doc = new XmlDocument();
6. (moudlePath);//读取模板
7. //封面
8. XmlNode xmlFm = SingleNode("/ns0:Workbook/ns0:
Worksheet[@ss:Name='封面']/ss:Table/ss:Row/ss:Cell[ss:Data='
图幅号']",xnm);
9. XmlElement xeFm = (XmlElement)Node;
10. Attribute("ss:Expanded ColumnCount");
11. Attribute("ss:Expanded RowCount");
12. ext = limitFields + ":"+limitValue;
13. //目录
14. XmlNode xmlMl = SingleNode("/ns0:Workbook/ns0:
Worksheet[@ss:Name='目录']/ss:Table/ss:Row/ss:Cell[ss:Data='
管 类 ']",xnm);
15. XmlNode xMlCopy = Node;
16. //计算页码
17. startPageNumber = startPageNumber + 1;
18. //生成目录
19. if (xmlMl != null)
20. {
21. XmlNode xMLYmCopy = ();
22. ext=
[ii].TableName;
23. ext =ng
();
Child(xMLYmCopy);
25. }
26. //成果表
27. xmlN = SingleNode("/ns0:Workbook/ns0:Worksheet
[@ss:Name='成果表模板']",xnm);
28. if ( == "Table")
29. {
30. //得到行
31. XmlNode xRowCopy = null;
32. f o r e a c h(X m l N o d e x T b I t e m s i n odes)
33. {
34. if ( == "Row")
35. {
36. if( !="NamedCell")
37. {
38. xRowCopy = xTbItems;
39. }
40. }
41. }
42. }
43. XmlNode rowNew = ();//复制行
44. inText = [j][xlsFieldArrs[k]].ToString();//单元格
内容
45. odes[k].ext= inText;//赋值
46. Child(rowNew);//添加至XML文档
47. //保存
48. FileStream fiosave = new FileStream
(saveFilePath+""+limitValue+".xls",);
49. (fiosave);
50. e();
4 结 语
本文利用C#语言开发,基于XML模板解析方法实现了Excel地下管线成果表的
导出。通过定制Excel模板,利用XML格式的模板解析方法,使数据与格式表现
分离,利用XML文件的快速读写特性可以高效实现海量数据的导出,同时满足对
导出表格格式的复杂要求。在工程实践项目运用中,较传统利用VBA制作成果表
的速度提升了数倍,可以高效处理批量数据导出工作。
参考文献
【相关文献】
[1] 洪立波,周凤林,区福邦.CJJ61-2003,城市地下管线探测技术规程[S].北京:中国建筑
工业出版社,2003.
[2] 蔡小艳,李龙腾,葛玉等.基于C#的 Excel数据导入导出研究与实现[J].智能计算机与应
用,2014(5):83-85.
[3] 潘福成,张士杰.基于XML的智能报表生成工具的研究[J].小型微型计算机系统,2005,
26(1):134- 138.
[4] 周一,王世耕,黄忠全等.基于FastReport 的通用报表系统的设计与实现[J].计算机应用
与软件,2008(2):284-285.
[5] 张亚平,贺占庄.B/S架构下动态报表的一种实现方式[J].计算机技术与发展,2007(4):
93- 95.
[6] 王勇超,张璟等,马静,王新卫,杨凯锋.利用XML和Excel 设计动态通用报表系统的新方
法[J].现代电子技术,2008(18):93-96.
版权声明:本文标题:基于XML的地下管线成果表生成方法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1713593921a642426.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论