65.9K
CodeProject 正在变化。 阅读更多。
Home

报告:将 dotnet 代码嵌入 MS Word 文件

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.43/5 (4投票s)

2009年1月15日

CPOL

2分钟阅读

viewsIcon

28592

downloadIcon

792

使用 MS Word 文件作为模板的简单报告引擎

引言

这是一个简单的报告库。它允许开发者从 MS Word 文件中准备报告模板。在 MS Word 文件中,开发者可以直接嵌入 vb.net 代码。  

背景 

我从优秀的 Ruby Documatic 项目中获得了这个库的想法。 

使用代码 

从 MS Word 模板创建报告需要两个步骤。首先打开新的 MS Word 文档并编辑它。使用 ### 作为代码占位符,$$$ 作为显示占位符。begining ### 和 ending ### 之间的代码必须放在同一个段落中。$$$ 应该是单行。下面是一个小模板的示例。然后将文档保存为 MS Word XML 文档。您必须使用 MS Word 2007。 

s1.PNG

所以让我们回顾一下正在发生的事情。页面顶部有一些导入语句。
然后有一个第一个表格,它将显示 10 行,对吧?
第二个表格正在循环遍历一些测试动物集合。您可能会注意到有一个“data”变量。这个变量对于将您的特定数据发送到报告非常有用。在 Word 模板中,只需将其转换为所需的任何类型并使用它即可。 

第二步涉及调用报告

      Dim data As New List(Of Object)
      data.Add(New Animal("Elephant", 1000))
      data.Add(New Animal("Tiger", 300))
      data.Add(New Animal("Crocodile", 250))
      data.Add(New Animal("Dog", 40))
      data.Add(New Animal("Chicken", 1))
      data.Add(New Animal("Dragon", 10000))
      Dim nd As New NDocs.Generator
      nd.References.Add("WindowsApplication2.exe")
      nd.Generate("xmlfile2.xml", "final2.xml", data)

这是最终结果: 

s2.PNG

很简单,对吧?好吧,这个库仍然处于非常 alpha 阶段,所以并非所有模板都能正常工作。请记住,您应该将整个代码放在 ### 之间,在一个段落中(使用 shift-enter),并且 $$$ 是单行。  

这个库是如何工作的?

实际上,很简单。毕竟只有 8 KB。

所以这里是原则: 

1. 开发者编辑 MS Word 文件(或者稍后客户修改它,或者客户发送第一个版本,开发者添加标签) 

2. MS Word 文件保存为 XML 文档  

3. 生成最终(输出)文件的方式如下: 

3.1 XML 解析器提取代码片段(###)和原始 MS Word 标签 

3.2 所有标签都组合成动态生成的源代码,然后进行运行时编译。结果是新的运行时、内存类型(类),可以实例化和调用。

3.3 然后通过反射调用这个新类型 

3.4 结果直接写入输出文件 

3.5 不需要 MS Word API


我期待您的建议/意见。    

© . All rights reserved.