簡體   English   中英

如何使用互操作和C#將表中的行復制到Word 2007中的另一個表

[英]How to copy rows from a table to another table in Word 2007 using interop and C#

我在一個Word文檔中有一個主表。

該表的第一列具有鍵。 我必須根據用戶選擇的鍵(行)創建另一個表。

用戶可以選擇一個鍵(行)多次。

表格1:

TaskName    Data       Group
abc         data1      group1
pqr         data2      group2
lmn         data3      group3

TaskName列是關鍵列,用戶可以選擇abc,pqr,abc,pqr,lmn

這將生成一個表,如下所示:

TaskName    Data       Group
abc         data1      group1
pqr         data2      group2
abc         data1      group1
pqr         data2      group2
lmn         data3      group3

我不能使用table.Cell().Range.Text ,因為這樣做會丟失格式。

我首先嘗試使用Word.Selection,但是我想不出一種方法,一次可以一行並復制粘貼。 可以使用Word.Selection進行。

我想到的下一件事情是一次復制粘貼一個單元格,但是Range屬性保留了表格單元格的結構。 我調查了Word模型,試圖找出每行之后是否存在某種終止符,以將其區分為行末。 有這樣一個角色,但它適用於所有單元。 要找到此字符,請單擊“辦公室”按鈕(位於“家”旁邊),單擊“文字選項”,再單擊“顯示”, 在該部分中始終在屏幕上顯示這些格式標記 ,勾選顯示所有格式標記。 這將在Word文檔中顯示所有不可打印的字符。 這是您將看到¤的符號。

該符號保存單元的結構信息,公開的ANSI字符為13 +7。13是一個段落標記,而7是“單元結束”標記。 這在文件中包含指向單元結構管理的更多信息。 在Word 2007中,這兩個字符顯示為一個字符,因此我們需要從單元格的范圍中刪除該字符。

我創建了一個列表來保存主表中所需的所有單元格。

List<Microsoft.Office.Interop.Word.Cell> masterTableCells=new List<Microsoft.Office.Interop.Word.Cell>();

之后,以下代碼從范圍中刪除最后一個字符

                    Microsoft.Office.Interop.Word.Table table = b.Range.Tables[1];

                table.ID = b.Name;
                for (int colCounter = 1; colCounter <= masterTable.Columns.Count; colCounter++)
                {
                    Microsoft.Office.Interop.Word.Range sourceRange = masterTable.Cell(1, colCounter).Range;
                    Microsoft.Office.Interop.Word.Range targetRange = table.Cell(1, colCounter).Range;
                    object oCharacter = Microsoft.Office.Interop.Word.WdUnits.wdCharacter;
                    object negOne = -1;
                    sourceRange.MoveEnd(oCharacter, negOne);
                    targetRange.MoveEnd(oCharacter, negOne);
                    targetRange.FormattedText = sourceRange.FormattedText;

                }

目的是獲得格式化的文本,並通過從每個單元格Range中刪除字符,我們只能指向特定單元格的結構,而不是整個表。

如果您嘗試僅使用格式化的文本屬性運行循環,則會收到表損壞錯誤。 希望這可以幫助。

暫無
暫無

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

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