什麼是使用Word Interop庫從Document對象中刪除特定頁面的最簡單和最有效的方法?Interop Word - 從文檔中刪除頁面
我注意到有一個頁面屬性擴展/實現IEnumerable。是否可以簡單地刪除數組中的元素,並將頁面從文檔中刪除?
我也看到了範圍和部分的例子,但看起來不太優雅使用。
謝謝。
什麼是使用Word Interop庫從Document對象中刪除特定頁面的最簡單和最有效的方法?Interop Word - 從文檔中刪除頁面
我注意到有一個頁面屬性擴展/實現IEnumerable。是否可以簡單地刪除數組中的元素,並將頁面從文檔中刪除?
我也看到了範圍和部分的例子,但看起來不太優雅使用。
謝謝。
一個可能的選擇是書籤,全部頁數(選擇整個頁面,轉到工具|插入書籤然後鍵入一個名字)。然後,您可以使用Document對象的書籤集合來引用文本並將其刪除。
或者,嘗試C#等效此代碼的:
Doc.ActiveWindow.Selection.GoTo wdPage, PageNumber
Doc.Bookmarks("\Page").Range.Text = ""
第一行的光標移動到網頁 「的PageNumber」。第二個使用預定義書籤,它總是指光標當前所在的頁面,如果存在,則包括頁面末尾的分頁符。
您的問題的簡短答案是,沒有優雅方式來做你想要實現的。
單詞嚴重地將文檔的內容與其佈局分離。就Word而言,文檔沒有頁面;相反,頁面是通過以某種方式(例如打印視圖)查看文檔而從文檔派生的。 Pages
集合屬於Pane
接口(例如由Application.ActiveWindow.ActivePane
訪問),該接口控制佈局。因此,Page
上沒有方法允許您更改(或刪除)導致頁面存在的內容。
如果您可以控制您在代碼中處理的文檔,我建議您在文檔中定義代表要以編程方式刪除的部分的部分。節是一個更好的構造,因爲它們表示內容,而不是佈局(節可能包含分頁符)。如果你這樣做,你可以使用下面的代碼刪除特定部分:
object missing = Type.Missing;
foreach (Microsoft.Office.Interop.Word.Section section in doc.Sections) {
if (/* some criteria */) {
section.Range.Delete(ref missing, ref missing);
break;
}
}
如果由於Word文檔可能具有不同的佈局/視圖,Microsoft不使用頁面,這是有道理的。我只是希望有一種比使用範圍更簡單的方法。 – Koekiebox 2010-09-21 07:03:43
我知道它不使用Interop,但這些人有上面的一些很好的庫:http://www.aspose.com/categories/java-components/default.aspx – Koekiebox 2010-09-30 08:04:24