2011-05-24 73 views
0

我正在寻找从Visual Basic或Visual C#中填充Word文档的选项。我目前正在使用合并字段,下面的代码填写Word文档中的特定字段,但现在我遇到了需要将表格数据推送到MS Word的情况。无论如何要从网格视图获取数据(行数是动态的),并使用合并字段或类似的东西将其导入到Word文档表中?我要保持我的模板文档的格式,并希望能够控制页面布局..如何在ASP.NET中使用Visual Basic/Visual C#填充Word文档

  Dim templateDoc As String = Server.MapPath("\Userfiles\docs\" & location) 
      Dim mergePath As String = Server.MapPath("\App_Data\Temp\") 
      Dim mergeFileName As String = location.Replace("/", "_") & ".docx" 
      Dim mergeDoc As String = mergePath & "\" & mergeFileName 

      File.Copy(templateDoc, mergeDoc, True) 

      Using pkg As Package = Package.Open(mergeDoc, FileMode.Open, FileAccess.ReadWrite) 

       Dim uri As Uri = New Uri("/word/document.xml", UriKind.Relative) 
       Dim part As PackagePart = pkg.GetPart(uri) 

       Dim xmlMainXMLDoc As XmlDocument = New XmlDocument() 
       xmlMainXMLDoc.Load(part.GetStream(FileMode.Open, FileAccess.Read)) 

       Dim innerXml As String = xmlMainXMLDoc.InnerXml _ 
             .Replace("«Corporate Legal Name»", businessName) _ 
             .Replace("«Address 1»", mailingAddress1) _ 
             .Replace("«Address 2»", mailingAddress2) _ 
             .Replace("«City»", city) 
       xmlMainXMLDoc.InnerXml = innerXml 

       Using partWriter As New StreamWriter(part.GetStream(FileMode.Open, FileAccess.Write)) 
        xmlMainXMLDoc.Save(partWriter) 
       End Using 

       pkg.Close() 
      End Using 

回答

2

您可以在HTML写出来,并扩展名为.doc,Word将保存处理它优雅。

+0

你有什么例子吗?我需要为整个文档写出HTML吗?这似乎可能会相当耗时,并且需要很多代码... – 2011-05-24 17:56:04

+0

为什么不用一个html table来代替其他合并域? – hunter 2011-05-24 17:58:49

+0

我希望这就是你的意思...所以如果我有一个网格视图,我不能使用HTML编写器输出到合并领域的gridview html?有什么样式的方式? – 2011-05-24 18:01:58