问题:当前你已经有一个InfoPath2007的表单,但是你想把他转换成一个Word2007 的文档文件(*.docx)
解决方案:
(1).创建一个Word2007临时的模板文档文件(template.docx)
(2).解压出这个模板(template.docx)的document.xml文件,
(3).用这个文件(document.xml)去创建一个XSLT显示样式文件来转换InfoPath表单中的XML到一个新的Word2007文档的Document.xml的文件中就可以了。
实现步骤:
1.打开Microsoft Visual Studio 2005 ,创建一个InfoPath 2007表单模板工程(C#语言)
2.按照你的需要设计这个表单模板,在这我的设计如下图-1:
3.我设计的这个表单的数据源视图如下图-2所示:
4.创建一个.docx的文档如下图-3所示,并另存为template.docx。这个文件将是你转换过程中的临时文件。
5.复制tempalte.docx文件,粘贴并重命名为template.zip压缩文件。
6.解压出这个文件的所有文件,如图-4所示:
7.打开进入Word这个文件夹,其包含的文件如下图-5:
8.用记事本的方式打开这个document.xml文件并且另存为transform.xsl文件到跟temlpate.docx文件所在的同一个目录下。
9.替换操作
(1)把transform.xsl文件的
替换为
(2)在transform.xsl文件的最后添加如下的结束标签
(3)转换到Microsoft Visual Studio 2005 设计的解决方案视图,找到mySchema.xsd文件以代码视图打开。复制所有在的命名空间(除了xsd与默认的命名空间外)粘贴到transform.xsl文件的<xsl:stylesheet>的标签中。<xsl:Stylesheet>标签的开头如下图-6所示:
(4)复制transform.xsl问的所有的定义在标签为<w:document>节点的命名空间,粘贴到标签为<xsl:stylesheet>节点里,现在<xsl:Stylesheet>标签的开头变为如下图-7所示:
(5)在文件transform.xsl中搜索ip_firstname替换为
ip_lastname替换为
ip_website替换为
table_cell_1替换为
找到</w:tblGrid>标签,在后面添加如下XSL代码:
找到</w:tr>标签,在后面添加如下XSL代码:
11.切换到VS2005 的表单设计模式,在工具栏中找到“数据”——>“数据连接”弹出对话框。
12.点击“添加”按钮,弹出数据连接向导,选中“仅接收数据”,点击“下一步”。
13.在“希望从何处接收数据”选中“XML文档”,点击“下一步”。浏览找到刚才保存的transform.xsl文件,点击“下一步”——>“下一步”,选中“在打开表单时自动检索数据”,点击“完成”按钮后点击“关闭”完成操作。
14.转到解决方案视图,找到“引用”,右键“添加引用”找到WidowsBase.dll并添加即可。
15.在表单的代码视图中添加如下语句代码:
using System.IO;
using System.IO.Packaging;
using System.Xml.Xsl;
using System.Diagnostics;
16.在表单的“Convert to Word 2007”按钮的Click事件中添加如下代码:
17.在工具栏中“工具箱”——>“表单选项”弹出对话框,选择“安全和信任”,设计你的表单签名。
18.项目工程生成以后,你的表单就可以用了!当你填写完成数据,点击按钮就可以自动生成一个Word2007的文档,并且包含了刚才所填写的数据值。