在aspose中select范围

你知道一个相当于VBA代码:

Range(Selection, Selection.End(xlToRight)).Select 

在Aspose.Cells。 它似乎只能select整个行中的最后一个单元格:

 public Aspose.Cells.Cell EndCellInRow ( Int32 rowIndex ) 

或者在一个范围内右边的最后一个单元格:

 public Aspose.Cells.Cell EndCellInRow ( Int32 startRow, Int32 endRow, Int32 startColumn, Int32 endColumn ) 

但是你必须或多或less知道你的桌子有多大。

我从2009年发现这个: http : //www.aspose.com/community/forums/permalink/196519/196405/showthread.aspx但是这不会解决我的问题,因为我可能有许多表在水平和verticalally在工作表中。 而我无法预测他们将会在哪里。

编辑1:对不起,如果这是愚蠢的问题,但Ctrl + Shift +箭头是这样一个常见的操作,我不能相信它不会实现,所以我确保我真的要重新发明轮子。

Aspose.Cells使用名为“Worksheet.ListObjects”的属性在工作表中提供表的列表。 “ListObjects”是一个“ListObject”types的对象,它代表了Excel工作表中的表格。 这意味着如果工作表中有多个表,ListObjects集合将非常方便地访问工作表中的每个表。 每个“ListObject”又包含一个名为“DataRange”的属性,它指定了表格内的所有单元格。 为了方便起见DataRange可以用于以下操作:

  1. 在表中的单元格上应用样式/格式
  2. 获取数据值
  3. 合并或移动范围内的单元格
  4. 导出内容
  5. 让枚举数遍历表格单元格

要从DataRange中select单元格,可以使用DataRange遍历一行中的所有单元格(这也可以在列中完成)

像使用Ctrl + Shift + Arrowselect单元格一样对表格单元格应用任何操作都可以使用工作簿对象执行,如下所示:

 Workbook workbook = new Workbook(new FileStream("book1.xls", FileMode.Open)); if (workbook.Worksheets[0].ListObjects.Count > 0) { foreach (ListObject table in workbook.Worksheets[0].ListObjects) { Style st = new Style(); st.BackgroundColor = System.Drawing.Color.Aqua; st.ForegroundColor = System.Drawing.Color.Black; st.Font.Name = "Agency FB"; st.Font.Size = 16; st.Font.Color = System.Drawing.Color.DarkRed; StyleFlag stFlag = new StyleFlag(); stFlag.All = true; table.DataRange.ApplyStyle(st, stFlag); } } workbook.Save("output.xls"); 

Aspose文档中还有一些有用的信息可用于表格样式和在ListObject上应用格式 。 为了获得某个行或列中的最后一个表单元格,我相信这将有助于:

 int iFirstRowIndex = table.DataRange.FirstRow; int iFirstColumnIndex = table.DataRange.FirstColumn; int iLastRowIndex = table.DataRange.RowCount + iFirstRowIndex; int iLastColumnIndex = table.DataRange.ColumnCount + iFirstColumnIndex; for (int rowIndex = 0; rowIndex < table.DataRange.RowCount; rowIndex++) { //Get last cell in every row of table Cell cell = worksheet.Cells.EndCellInColumn(rowIndex + iFirstRowIndex, rowIndex + iFirstRowIndex, (short)iFirstColumnIndex, (short)(iLastColumnIndex - 1)); //display cell value System.Console.WriteLine(cell.Value); }