【问题标题】:Insert HTML into OpenXML Word Document (.Net)将 HTML 插入 OpenXML Word 文档 (.Net)
【发布时间】:2011-03-10 05:02:39
【问题描述】:

使用 OpenXML SDK,我想将基本的 HTML sn-ps 插入 Word 文档。

你会怎么做:

  • 直接操作 XML?
  • 使用 XSLT 吗?
  • 使用 AltChunk 吗?

此外,C# 或 VB 示例非常受欢迎:)

【问题讨论】:

    标签: .net openxml word-2007


    【解决方案1】:

    这是另一个(相对较新的)替代方案

    http://notesforhtml2openxml.codeplex.com/

    【讨论】:

      【解决方案2】:

      嗯,很难给出一般性的建议,因为这在很大程度上取决于您的意见,什么是最好的。

      这是一个使用 OpenXML SDK v2.0 和 XPathDocument 为 (X)HTML 文档中的每个段落插入一个段落到 DOCX 文档中的简单示例:

          void ConvertHTML(string htmlFileName, string docFileName)
          {
              // Create a Wordprocessing document. 
              using (WordprocessingDocument package = WordprocessingDocument.Create(docFileName, WordprocessingDocumentType.Document))
              {
                  // Add a new main document part. 
                  package.AddMainDocumentPart();
      
                  // Create the Document DOM. 
                  package.MainDocumentPart.Document = new Document(new Body());
                  Body body = package.MainDocumentPart.Document.Body;
      
                  XPathDocument htmlDoc = new XPathDocument(htmlFileName);
      
                  XPathNavigator navigator = htmlDoc.CreateNavigator();
                  XmlNamespaceManager mngr = new XmlNamespaceManager(navigator.NameTable);
                  mngr.AddNamespace("xhtml", "http://www.w3.org/1999/xhtml");
      
                  XPathNodeIterator ni = navigator.Select("//xhtml:p", mngr);
                  while (ni.MoveNext())
                  {
                      body.AppendChild<Paragraph>(new Paragraph(new Run(new Text(ni.Current.Value))));
                  }
      
                  // Save changes to the main document part. 
                  package.MainDocumentPart.Document.Save();
              }
          }
      

      该示例要求您的输入是有效的 XML,否则在创建 XPathDocument 时会出现异常。

      请注意,这是一个非常基本的示例,没有考虑任何格式、标题、列表等。

      【讨论】:

        【解决方案3】:

        我不确定,您实际上想要实现什么。 OpenXML 文档对格式化元素(如段落、粗体文本等)有自己的类似 html (WordprocessingML) 的表示法。如果您想在文档中添加一些具有基本格式的文本,而不是我建议使用 OpenXML 语法并用它来格式化插入的文本。

        如果您有一个 html sn-p,您必须按原样包含在文档中,您可以使用 OpenXML 的“外部内容”功能。使用外部内容,您可以将 HTML 文档包含到包中,并在要包含此内容的位置的文档中创建引用 (altChunk)。此方案的缺点是,并非所有工具都支持(或正确支持)生成的文档,因此我不推荐此方案,除非您确实无法更改 HTML 源代码。

        如何在 openxml word doc 中包含任何内容(wordml)是一个独立的问题,恕我直言,答案在很大程度上取决于您要应用的复杂修改以及文档的大小。对于一个简单的文档,我会简单地从包中读出文档部分,获取它的流并将其加载到 XmlDocument。您可以很容易地将其他内容插入 XmlDocument,然后将其保存回包中。如果文档很大,或者您需要在多个地方进行复杂的修改,XSLT 是一个不错的选择。

        【讨论】:

        • 你是对的,但我正在寻找经验的回报。到目前为止,我已经实现了 altChunk,但它只有在你有 Word2007 时才有效,而不是兼容包。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-16
        相关资源
        最近更新 更多