My favorites | Sign in
Project Home Downloads Wiki Issues Source
READ-ONLY: This project has been archived. For more information see this post.
Search
for
XmlToWord  
使用WORD模板来格式化XML数据源
Updated Feb 4, 2010 by dragon...@gmail.com

内容简介

对账单打印转换程序开发概述

接口文档描述

接口基本结构说明,见《对账单数据文件接口.doc》和《checksheet_字段结构涵义说明.xml》。 其中,对帐单由财务状况表和对帐单主体组成。对于一个协议,可能有财务状况表,也可能没有,财务状况表有三种表样,表样1、表样2、表样3。对于一个协议,最多只能有一种表样。 财务状况表的结构说明见附件的《财务状况表与xml结构对应.doc》。

xml文件主要结构

xml对账单组成

表和标签的对应关系

技术实现参考

准备工作:

1. 将一个doc模板文件另存为xml文件;

2. 将xml文件拆分成表和表的一行多个模板文件和一个main.xml,将里面需要显示的内容用特殊标签替换。

转换步骤:

1.读取模板文件,给每个模板一个标识;

2.读取xml文件,给每个表一个标识;

3.根据xml中表的标识寻找匹配的模板,将模板中的特殊标签替换成xml中的数据;

4.将替换后的模板拼成一个可以用word打开的文件。

注意事项

注意事项:有些客户在对账期内交易明细比较多,需要考虑只显示部分明细,节约纸张和提高转换的效率。

问题:个人纸质对账单是按照平信的方式邮寄,一旦丢失,有可能造成客户信息的泄密,为此,对账单上的客户账号或卡号等信息是否需要特殊处理? 答复:需要对卡号进行特殊处理,以卡号后六位展示即可。

对账数据应加密交接。外包机构打印对账单必须在监控下完成,以确保对账数据及对账单的保密性、安全性。

修改内容如下(更新)

1、表样一和表样三中增加定期存款的XXXXXX卡,

<busi-cunkuan1>
<tab10>
。。。
</tab10>
</busi-cunkuan1>

2、对账单温馨提示中修改X行网银网址:www.XXXXXXX.XXX.XX;

增加一条提示:本对账单从服务开通日开始统计账务数据,因此您首月账单中“本月增减额”与“本月交易明细”数据有可能与实际情况不符;

前7条提示的最后的标点符号由句号“。”统一改成分号“;”

3、寿险和个人财险的注释改为:

注:由于保险资产余额(保单现金价值)变动较为频繁,请以保险公司提供的对账信息为准;

联系人: XXX 联系电话: 0123-1234567

注意事项(更新三):

1、本此修改表样一、三的定期存款的理财金白金卡,与定期存款的理财金账户结构保持一致。具体请参照《checksheet_字段结构涵义说明.xml》。

2、财务状况表busi-tongji下的tab里面,a标签代表名称,b标签代表上期余额,c标签代表本期余额。具体请参照《checksheet_字段结构涵义说明.xml》。

3、记账式债券表单中的表头显示项名称“交易账户”改为“债券交易卡”,银行理财产品表单中的表头显示项名称“交易账户”改为“理财产品交易交易卡”。

实际采用方案

1, 根据"checksheet_字段结构涵义说明.xml"的格式和先后顺序,填入实际数据,来源为"report_1390-屏蔽客户信息.xml"和"report_20081118_1901_100005961.zip"等实际XML数据。制作成格式和内容完备的"checksheet_fulldata.xml"

2, 根据"checksheet_fulldata.xml"可以由xmlspy,visual studio 2008, stylus studio 2007/2008( 自动生成xml schema文件,可用于XML验证。以备以后用来验证数据源是否正确。

3, 使用Word2003的生成过滤网页(可在工具--》选项--》常规---》Web选项 里面选定IE6及更高版本),把"对账单word文档与xml格式对照.doc"另存为过滤网页即“checksheet.doc”

4, 根据XML数据源的需要,在checksheet.doc中间加入数百个标签,并修整格式。 标签生成的规则是

在需要放入<xsl:for-each select="caca/checksheets/checksheet/busi-XXXX/tab1/lists/list">
的重复元素的表格中的<tr>附近做一个标签类似于{{ptj11}} 
重复的元素为{{tj11a}},{{tj11b}},{{tj11c}}。最后一个重复元素{{tj11c}}还是放入
</xsl:for-each>的位置标志。
单独的元素直接使用{{address}},对应于
<xsl:value-of select="caca/checksheets/checksheet/XXXX"/>
标签的具体标识含义参见下文。

5,使用stylus studio 2007(只有2007 build 735e第一版和以前版本才有的xsl designer中的功能)中的html到xsl转换工具生成checksheet.xsl

6,使用PowerGrep等强劲工具结合正则表达式对checksheet.xsl中的标签进行替换,得到适合XML数据源使用的XSL文件

7, 编辑checksheet.xsl,加入xsl:if等对XML进行简单查询控制。

8, 使用工具把 源数据.xml 和 checksheet.xsl 结合在一起生成 .html文件。该.html文件可以直接由word 2003打开,调整word 2003"视图"为"页面"即可看见最终效果图。

标签的具体标识含义

三个样式的对比

对帐单 MODE=0表样1 MODE=1表样2 MODE=2表样3 MODE=3缩写
<busi-zhibiaofenxi>
<busi-tongji>
统计表样
<busi-zhibiaofenxi>
指标分析
<busi-tongji>
<busi-zhibiaofenxi>
<busi-tongji>
<busi-zhibiaofenxi>
Tj zb
<busi-credit_deposit>
<busi-cunkuan2>
存款表样2
<busi-credit_deposit>
<busi-cunkuan1>
存款表样1
<busi-cunkuan2>
存款表样2
<busi-credit_deposit2>
<busi-credit_deposit>
<busi-cunkuan3>
存款表样3
K C
<busi-jijinfene>
<busi-jijinmingxi>
<busi-jijindingtou>
<busi-jijinchicang>
<busi-zaiquan>
<busi-huangjin>
<busi-yinhanglicai>
<busi-yinhangbaoxian>
<busi-cunguan>
<busi-jijinfene>
基金份额
<busi-jijinmingxi>
基金投资明细
<busi-jijindingtou>
基金定投明细
<busi-jijinchicang>
基金持仓结构
<busi-zaiquan>
债券
<busi-huangjin>
黄金
<busi-yinhanglicai>
银行理财
<busi-yinhangbaoxian>
银行保险
<busi-cunguan>
第三方存管
<busi-jijinfene>
<busi-jijinmingxi>
<busi-jijindingtou>
<busi-jijinchicang>
<busi-zaiquan>
<busi-huangjin>
<busi-yinhanglicai>
<busi-yinhangbaoxian>
<busi-cunguan>
<busi-jijinfene>
<busi-jijinmingxi>
<busi-jijindingtou>
<busi-jijinchicang>
<busi-zaiquan>
<busi-huangjin>
<busi-yinhanglicai>
<busi-yinhangbaoxian>
<busi-cunguan>
Jj m t cc q h y b cg
<busi-daikuan1>
<busi-credit_loan>
<busi-daikuan1>
<busi-credit_loan>
<busi-credit_loan2>
<busi-daikuan2>
<busi-daikuan1>
<busi-credit_loan>
Kd D kd
<busi-credit_detail>
<busi-other_detail>
<busi-ywtx>
<busi-credit_detail>
<busi-other_detail>
<busi-ywtx>
<busi-credit_detail>
<busi-other_detail>
<busi-ywtx>
<busi-credit_detail>
<busi-other_detail>
<busi-ywtx>
Km Qt tx

{{pc103}}的含义是position busi-cunkuan3 tab10

{{c10j3}}的含义是busi-cunkuan3 tab10 元素j

第一个字母为P专门表示循环开始的位置。除了P以外的字母为缩写如c 对应 存款

最后一个数字表示是第几种样式表(如busi-cunkuan1,busi-cunkuan2),其他的数字表示第几个Tab。

如果是busi-cunkuan这样后面无数字的主表,对应地也不要最后的数字,如{{c10j}}

反正标签设计的原则就是尽量简短而且和数据源的格式和内容对得上意思,并且要唯一而有序。

待研究的另辟蹊径

sheetdoc.doc --> sheetdoc.xml (WordML) 经过powergrep的标签(标签可使用前面说的自创标签,也可以考虑使用WORD内置的Schema对应后所应用的标签)替换后再经由软件工具生成XSL--> sheetdoc.xsl +XML数据源--> 按sheetdoc.xsl格式化的数据word文档

Fwd: Re: WordML to XML

Lightweight XML Editing in Word 2003

Generating Word documents using XSLT

= 参考资料 =

Walkthrough: Word 2007 XML 格式(转)

利用Minidx Extract-Text Com组件从Word,Xls,Pdf……等文件中读取文本内容

用VB将WORD文档(或其他的二进制数据)生成xml文件并互相转换

用VB+WORD模版+数据库来制作格式合同的方法

有关从数据库向WORD中输出内容的,最关键是要每个分页要有一样的表头。高手,高手,求救

程序没有写换行,是因为WORD在写入表格时,会根据表格宽度自动换行的,在做模板时由WORD考虑每一格内容太多的问题,这样格式(包括换行的问题)由WORD模板决定,写入数据由VB完成

高分求word模板打印方法

基于模板和XML在BS结构应用中生成word文件

在Visual Basic 6.0 中创建Word文档

开启一个预先定义好的WORD模板并替换模板中指定的某个字符串

Office2003的软件技术和工具手段(图)

操作Word模板文件.dot 结合具体数据 生成Word文档 .doc

VB中生成WORD对象,并控制WORD运行,打开指定的文档。如何取得WORD运行状态!比如知道WORD是否保存过。

利用Word邮件合并插入图片 Word邮件合并实例:批量制作有照片的工作证 VBA、Word和数据库的联合编程

VB代码word,excel

使用 Microsoft Access 导入和导出 XML 数据:Office Space:Microsoft Office 应用程序脚本编写提示和技巧 从Access (2003) 导入导出 XML

在OFFICE中使用构架 |Microsoft Office Word 2003 对象模型中新增的 XML 功能 |Microsoft Office Word 2003 XML:备忘录样式示例 |与 XML 一起使用 Visual Basic 和 ASP 生成 Excel 2003 工作簿 |XML 和 Microsoft Office Word 2003:编写行程报告 |使用 Access 2003 对象模型的 XML 功能 |使用 XML 在 Microsoft Office 2003 中解除信息锁定 Working with Microsoft Office Word 2003's XML

Generating images in WordprocessingML:如何在word xml中加入图形

XML2Word This project is a sample of how you can merge XML-files with a MS Word97 template. This makes it easy to create a mailmerge-system. I've created a ActiveX DLL to perform the mailmerge. This makes it very easy to reuse this code in other applications.下载Convert XML To Word Documents源码

XSLT Stylesheet Tester vb6

Use Microsoft Word as a Reporting Tool from Visual Basic

XSLT教程 XSLT教程 比较全的

Java:利用XML生成Word文档

Generating Word Reports / Documents

Powered by Google Project Hosting