簡體   English   中英

詞自動化多重粘貼問題

[英]Word Automation Multiple Paste Problem

有沒有比通過 C# 中的剪貼板將 HTML 片段粘貼到 Word 文檔更好的方法?

using Word = Microsoft.Office.Interop.Word;

我正在使用一些將 HTML 放入剪貼板的代碼:

HtmlFragment.CopyToClipboard(changedText);

我在 word 中有一個選擇(來自表單域),我這樣做:

 word.Selection.Paste();

但有時它只是拋出一個 COM 異常。 如果我添加

  Thread.Sleep(100);

我可以讓它工作,但這並不理想。

Insert 方法看起來是更好的選擇,但沒有來自 HTML 的 Insert。

那么使用自動化界面將大量 HTML 片段快速插入 Word 的最佳方法是什么?

編輯

回復中有一些很好的建議,但結果證明問題是一個簡單的<br>標簽導致單詞粘貼失敗。

對於互操作,您需要將Selection.PasteSpecialWdPasteDataTypewdPasteHTML一起使用,而不是Selection.Paste

如果您使用的是 Word 的新格式(即 2007/2010),您可以一起放棄互操作,而只使用 WordprocessingML(使用Open XML SDK或僅使用 Linq 和 System.IO.Packaging 自由編寫) . 或者,如果需要,您可以將它與 Interop 結合使用。

如果您使用的是 Open XML,則可以使用altChunk導入 HTML。 這是如何使用 altChunk 進行文檔組裝的示例(其中包括 HTML 示例)。 另一個(剛出爐 - 今天發布): 使用 altChunk 導入包含編號的 HTML

+1 Otaku 的評論,不過,一般來說,我發現最好使用各種 RANGE.* 函數來粘貼數據而不是 Selection 對象,或者通過剪貼板粘貼。 主要原因是,如果您通過剪貼板粘貼,您會打亂剪貼板上的任何內容(這可能不是用戶想要發生的事情)。

Selection 對象適用於所有打開的 Word 文檔,這在某些情況下會給您帶來麻煩。 不幸的是,有些事情您幾乎無法以任何其他方式做。

而且,有一些事情(比如改變當前光標位置的文本)你必須使用選擇對象。

+1 到 DarinH 評論。 另外需要注意的是,您可以使用 Range 粘貼到文檔中的任何位置,而無需更改文檔的選擇(文檔中的光標)。

有時 PasteAndFormat 會在新創建的文檔上拋出異常,如果發生這種情況,請在此處查看我的回復: https ://stackoverflow.com/a/65796482/15001063

暫無
暫無

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

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