[英]How can I merge two cells in the same column in a table
我正在用Interop Word創建一個表。 我想在同一列中合並兩個單元格:
table.Rows[2].Cells[7].Merge(table.Rows[3].Cells[7]);
table.Rows[2].Cells[8].Merge(table.Rows[3].Cells[8]);
第一行工作正常,但是在第二行中,出現此錯誤:
System.Runtime.InteropServices.COMException (0x800A1767): No se puede obtener acceso a determinadas filas de este conjunto porque la tabla tiene celdas combinadas verticalmente.
en Microsoft.Office.Interop.Word.Rows.get_Item(Int32 Index)
有什么問題 ?
table.Rows[2].Cells[7].Merge(table.Rows[3].Cells[7]);
table.Rows[2].Cells[8].Merge(table.Rows[3].Cells[8]);
第一行,正確合並cell(2,7)和cell(3,7)。 在第二行中,出現此錯誤:
System.Runtime.InteropServices.COMException (0x800A1767): No se puede obtener acceso a determinadas filas de este conjunto porque la tabla tiene celdas combinadas verticalmente.
en Microsoft.Office.Interop.Word.Rows.get_Item(Int32 Index)
一旦表中有合並的單元格,問題就來了-合並單元格時,某些命令(那些通過索引引用行/列的命令)不起作用,因為整個表中的索引值不再相同。 這很煩人,但這是Word表界面的設計方式。
一旦表格包含合並的單元格,就必須使用Table.Cell
屬性引用單個單元格。 此屬性的參數為rowIndex
和columnIndex
。 與Rows
和Columns
屬性不同,它們可以工作,但是必須意識到,一旦表包含一些合並的單元格,某些單元格將“不存在”。
在下面的示例中,該示例執行問題中描述的任務,行的跨度是給定的。 應當在其上重復合並的列位於一個數組中。 陣列從后到前循環,以確保引用的單元格正確。
C#
Word.Table tbl = doc.Tables[1];
Word.Cell cel = null;
int rowSpanStart = 2;
int rowSpanEnd = 3;
int[] aColIndex = {4, 6};
int colIndex;
for (int i = aColIndex.Length; i > 0; i = i -1)
{
colIndex = aColIndex[i-1];
cel = tbl.Cell(rowSpanStart, colIndex);
cel.Merge(tbl.Cell(rowSpanEnd, colIndex));
}
VBA:
Sub MergeCellsVertically()
'Merge cells vertically in multiple columns
Dim tbl As Word.Table
Dim cel As Word.Cell
Dim rowSpanStart As Long, rowSpanEnd As Long, aColIndex() As Variant
Dim colIndex As Long, i As Long
rowSpanStart = 2
rowSpanEnd = 3
aColIndex = Array(4, 6)
Set tbl = ActiveDocument.Tables(1)
For i = UBound(aColIndex) To LBound(aColIndex) Step -1
colIndex = aColIndex(i)
Set cel = tbl.Cell(rowSpanStart, colIndex)
cel.Merge MergeTo:=tbl.Cell(rowSpanEnd, colIndex)
Next i
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.