簡體   English   中英

將HTML插入OpenXML Word文檔(.Net)

[英]Insert HTML into OpenXML Word Document (.Net)

使用OpenXML SDK,我想將基本HTML片段插入到Word文檔中。

你會怎么做:

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

而且,C#或VB的例子非常受歡迎:)

這是另一種(相對較新的)替代方案

http://notesforhtml2openxml.codeplex.com/

好吧,很難給出一般性的建議,因為它很大程度上取決於你的輸入什么是最好的。

這是一個簡單的示例,使用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時會出現異常。

請注意,這是一個非常基本的示例,不考慮任何格式,標題,列表等。

我不確定,你真正希望實現的目標。 OpenXML文檔對格式化元素(如段落,粗體文本等)有一個類似html的(WordprocessingML)表示法。 如果您希望使用基本格式向文檔添加一些文本,而不是建議使用OpenXML語法並使用該格式設置插入文本的格式。

如果您有一個html片段,您必須將其包含在文檔中,您可以使用OpenXML的“外部內容”功能。 使用外部內容,您可以將HTML文檔包含到包中,並在位置中的doc中創建一個引用(altChunk),您可以在其中包含該文檔。 這個解決方案的缺點是,並非所有工具都支持(或支持正確)生成的文檔,因此我不建議使用此解決方案,除非您真的無法更改HTML源代碼。

如何將任何內容(wordml)包含在openxml word doc中是一個獨立的問題恕我直言,答案很大程度上取決於你想要應用的復雜修改,以及文檔的大小。 對於一個簡單的文檔,我只是從包中讀出文檔部分,獲取它的流並將其加載到XmlDocument。 您可以非常輕松地將其他內容插入XmlDocument,然后將其保存回包中。 如果文檔很大,或者您需要在多個位置進行復雜的修改,那么XSLT是一個不錯的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM