2013-02-06 78 views
1

選擇範圍你知道一個相當於VBA代碼:在閱讀Aspose

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但這不會解決我的問題,因爲我可能有許多表在水平和垂直的工作表中。我無法預測他們將會在哪裏。

編輯1: 對不起,如果這是愚蠢的問題,但Ctrl + Shift +箭頭是這樣一個常見的操作,我不相信它不會實現,所以我確保我真的必須重新發明輪。

回答

2

Aspose.Cells使用名爲'Worksheet.ListObjects'的屬性在工作表中提供表的列表。 'ListObjects'是一個'ListObject'類型的對象,它代表了Excel表格中的表格。這意味着如果工作表中有多個表,ListObjects集合將非常方便地訪問工作表中的每個表。每個'ListObject'反過來都包含一個名爲'DataRange'的屬性,它指定了表內的所有單元格。爲了方便起見DataRange可用於在表如下操作:

  1. 要應用樣式/表
  2. 在單元格格式
  3. 獲取數據值
  4. 合併或移動細胞的範圍
  5. 出口內容
  6. 要獲得枚舉表細胞

爲了從DataRange細胞的選擇遍歷,你可以遍歷使用DataRange來獲得一個行中的所有單元格(這也可以在一列中完成)

對Table單元應用任何操作,比如使用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"); 

還有約表格樣式和applying formatting on a ListObject的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); 
} 
+0

對不起遲到的反應,但我忙於其他的東西。我現在回到這裏,我需要說,你的偉大答案並不能解決問題。按照http://www.aspose.com/docs/display/cellsnet/Creating+a+List+Object在ListObjects集合中有任何東西,我需要先創建列表。目前我無法要求用戶這樣做。在這種情況下,收集只是空的。但是,感謝您花時間分享這些知識。我會贊成它,但我不能接受它。 –