1

你知道VBA代码的等价物吗:

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

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

public Aspose.Cells.Cell EndCellInRow ( Int32 rowIndex )

或范围内右侧的最后一个单元格:

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

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

我从 2009 年就发现了这个:http ://www.aspose.com/community/forums/permalink/196519/196405/showthread.aspx但这并不能解决我的问题,因为我可能在水平和垂直方向上都有很多表格。我无法预测他们会在哪里。

Edit1:对不起,如果这是一个愚蠢的问题,但是 ctrl+shift+arrow 是一个如此常见的操作,我不敢相信它不会被实现,所以我确保我真的必须重新发明轮子。

4

1 回答 1

2

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

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

要从 DataRange 中选择单元格,您可以使用 DataRange 遍历以获取行中的所有单元格(这也可以为列完成)

对表格单元格应用任何操作,例如使用 Ctrl+Shift+Arrow 选择单元格后,可以使用如下工作簿对象执行:

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);
}
于 2013-03-19T14:21:52.800 回答