如何在Word表格中选择矩形单元格区域

本文关键字:单元格 区域 选择 Word 表格 | 更新日期: 2023-09-27 18:21:29

给定类似的东西

Table table;
Cell cell_1 = table.Cell(2,2);
Cell cell_2 = table.Cell(4,4);

我想从cell_1到cell_2进行选择(或高亮显示)(就像手动操作一样)。

我最初认为做以下事情会奏效:

Selection.MoveRight(wdUnits.wdCell, numCells, WdMovementType.wdExtend)

但根据http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.selection.moveright%28v=office.11%29.aspx在备注下,使用wdCells作为单位将WdMovementType默认为wdMove,我想不出变通方法。

如何在Word表格中选择矩形单元格区域

以下是我找到的解决问题的方法。这不是最有效的方法,而且是doesn't work if the table has merged cells in it。我发现,可以选择起始单元格的范围,然后通过以单元格为单位移动来扩展范围的终点。通过发现要选择的区域的起点和终点之间的单元格数,可以迭代这些单元格步数。以下是通用代码:

word.Table table;
word.Cell cellTopLeft; //some cell on table.
word.Cell cellBottomRight; //another cell on table. MUST BE BELOW AND/OR TO THE RIGHT OF cellTopLeft
int cellTopLeftPosition = (cellTopLeft.RowIndex - 1) * table.Columns.Count + cellTopLeft.ColumnIndex;
int cellBottomRightPosition = (cellBottomRight.RowIndex - 1) * table.Columns.Count + cellBottomRight.ColumnIndex;
int stepsToTake = cellBottomRightPosition - cellTopLeftPosition;
if (stepsToTake > 0 && 
    cellTopLeft.RowIndex <= cellBottomRight.RowIndex && //enforces bottom right cell is actually below of top left cell
    cellTopLeft.ColumnIndex <= cellBottomRight.ColumnIndex) //enforces bottom right cell is actually to the right of top left cell
{
   word.Range range = cellTopLeft.Range;
   range.MoveEnd(word.WdUnits.wdCell, stepsToTake);
   range.Select();      
}

一种更简单的方法是使用Document.Range方法在矩形的两个角之间创建一个范围。这对于合并的单元格同样有效。

word.Document document;    
word.Cell cellTopLeft;
word.Cell cellBottomRight;
document.Range(cellTopLeft.Range.Start, cellBottomRight.Range.End).Select

注意:可以使用此表达式返回的范围来操作表的内容,而无需选择它,但它不适用于合并单元格(在后一种情况下,使用cell.Merge(MergeTo))。