[英]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自動化-填寫文本表單域和復選框表單域與郵件合並,在此處查看此答案
並從母艦上看到這一點:
如果您不想使用外部庫,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-before
和page-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.