簡體   English   中英

如何使用C#編寫的HTML創建Word文檔

[英]How to create a word document using html written in C#

我創建了一個必須創建Word文檔的C#應用​​程序。

我正在使用Microsoft.Office.Interop.Word進行此操作,並且已經成功地輸出了一些Word文檔,但是通過代碼創建內容是非常耗時的工作。

我注意到word能夠打開html頁面並將其顯示為常規內容,因此我在html中創建了一個簡單的測試表並將其插入到word文檔中。 但是,當我輸出文檔時,很明顯的事情發生了:標簽仍然在那里! Word沒有將標簽格式化為html。 它只是輸出我輸入的內容。

如何告訴單詞將文本重新格式化為html?

編輯:(當然是通過C#代碼)

編輯2:請注意,我正在解析一些數據來完成此操作,因此我將最終獲得約4頁的同一表/ html,因此我將需要能夠告訴單詞從下一頁開始我完成一個循環的時間。 因此,僅html方法可能無法正常工作。

如果您只想將簡單的HTML內容輸出為Word文檔,則可以始終作弊並以.doc擴展名寫出HTML內容。

Word將打開就好了。

如果需要添加分頁符,則可以使用CSS page-break-before ,如下所示:

<br style="page-break-before: always;"/>

如果您已開始使用Interop,並已進行了一點點閱讀,則該帖子指出您需要一個轉換器來插入HTML,並且只有在以下情況下才能訪問該轉換器:

  • 您從剪貼板粘貼HTML
  • 從文件打開/插入HTML

因此,此答案似乎提供了一個基於剪貼板的解決方案: 使用Interop將html文本添加到Word中

但是,如果有什么錢可以花在該項目上,我可以衷心推薦Aspose.Words ,它將為您完成所有這些工作。

不要用代碼構建文檔,不要在Word中以模板或郵件合並模板的形式創建文檔,而要使用代碼來合並或替換字段數據。

MS Word Office自動化-填寫文本表單域和復選框表單域與郵件合並,在此處查看此答案

並從母艦上看到這一點:

http://msdn.microsoft.com/en-us/library/ff433638.aspx

如果您不想使用外部庫,Interop太慢了,而且純HTML和郵件合並模板都不夠靈活,您可以將內容作為文本或HTML寫入一個或多個文件(使用C#),然后創建Word文檔中的VBA宏,它本身會創建第二個Word文檔,讀取內容文件並隨后進行所需的任何格式設置。

您可以通過使用命令行開關/ m啟動Word,以編程方式運行此宏。

另一種可能的方法是,如果您的html是xhtml(即符合XML),則可以使用XSLT將其轉換為Word XML格式。 但這將花費大量時間進行編碼。

如果您不必使用HTML作為起點,則可以自己構建Word XML文檔,而不是使用XSLT,那樣會更容易。 耗時但可行-這是我在工作中做的很多事情。

根據OP的要求,並且為了使其他人更容易找到此解決方案,此處提供了我作為評論發布的答案(以及測試的其他結果):

打開HTML文件時,MS Word會使用CSS屬性page-break-beforepage-break-after 有一個警告,但是:

在“ Web設計”視圖中,從不顯示分頁符(這並不意味着它們不存在),就像瀏覽器不“顯示”它們一樣。 Word默認情況下會在Web設計視圖上打開html文件(這很有意義)。 您需要打印文檔或切換到其他視圖(典型的“打印設計”)以查看所有中斷。

因此,保存帶有.doc擴展名的HTML文件是一個可行的解決方案(也經過測試:盡管擴展名正確,Word也會正確打開它)。

注意:所有測試都是使用以下代碼段在MS Word 2003上完成的: <html>asdf<br style="page-break-before: always;">new page!</html>

如果可以選擇第三方組件,我會推薦Aspose的東西。
到目前為止,我對他們的工具非常滿意。 該API有點凌亂,但一切都能按預期進行。

暫無
暫無

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

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