这是我发现问题的解决方法。这不是最有效的方法,它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();
}