首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择范围

选择范围
EN

Stack Overflow用户
提问于 2013-02-06 10:49:46
回答 1查看 7.5K关注 0票数 1

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

代码语言:javascript
复制
Range(Selection, Selection.End(xlToRight)).Select 

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

代码语言:javascript
复制
public Aspose.Cells.Cell EndCellInRow ( Int32 rowIndex )

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

代码语言:javascript
复制
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是一个如此常见的操作,我无法相信它不会实现,所以我要确保我真的必须重新发明轮子。

EN

回答 1

Stack Overflow用户

发布于 2013-03-19 14:21:52

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

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

要从DataRange中选择单元格,可以使用DataRange遍历以获得行中的所有单元格(列也可以这样做)

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

代码语言:javascript
复制
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上应用格式设置的有用信息。对于获取某一行或某列中的最后一个表单元格,我确信这将有所帮助:

代码语言:javascript
复制
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);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14727170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档