C# 在aspose中选择范围

C# 在aspose中选择范围,c#,excel,aspose-cells,vba,C#,Excel,Aspose Cells,Vba,您是否知道与VBA代码等效的代码: Range(Selection, Selection.End(xlToRight)).Select 在无糖细胞中。似乎只能选择整行中的最后一个单元格: public Aspose.Cells.Cell EndCellInRow ( Int32 rowIndex ) 或范围内右侧的最后一个单元格: public Aspose.Cells.Cell EndCellInRow ( Int32 startRow, Int32 endRow, Int32 star

您是否知道与VBA代码等效的代码:

Range(Selection, Selection.End(xlToRight)).Select 
在无糖细胞中。似乎只能选择整行中的最后一个单元格:

public Aspose.Cells.Cell EndCellInRow ( Int32 rowIndex )
或范围内右侧的最后一个单元格:

public Aspose.Cells.Cell EndCellInRow ( Int32 startRow, Int32 endRow, Int32 startColumn, Int32 endColumn )
但是你必须或多或少地知道你的桌子会有多大

我从2009年就发现了这一点:但这并不能解决我的问题,因为我可能在一张工作表中有许多表格,包括水平和垂直。我无法预测他们会在哪里

编辑1:
如果这是一个愚蠢的问题,很抱歉,但ctrl+shift+arrow是一个常见的操作,我不敢相信它不会实现,所以我要确保我真的必须重新发明控制盘。

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

  • 对表格中的单元格应用样式/格式的步骤
  • 获取数据值
  • 合并或移动范围内的单元格
  • 出口内容
  • 使枚举数遍历表单元格的步骤
  • 要从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文档中还有一些关于表格样式和样式的有用信息。对于获取特定行或列中的最后一个表单元格,我相信这将有助于:

    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);
    }
    
    int-IFirstrovindex=table.DataRange.FirstRow;
    int iFirstColumnIndex=table.DataRange.FirstColumn;
    int iLastRowIndex=table.DataRange.RowCount+iFirstRowIndex;
    int iLastColumnIndex=table.DataRange.ColumnCount+iFirstColumnIndex;
    对于(int-rowIndex=0;rowIndex
    很抱歉,我没有及时回复,但我正忙于其他事情。我现在回到这一点,我需要说,你伟大的答案并不能解决问题。为了在ListObjects集合中拥有任何内容,我需要首先创建列表。目前,我不能要求用户这样做。在这种情况下,集合就是空的。但是谢谢你花时间分享这些知识。我会投赞成票,但我不能接受。