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 + 矢印は非常に一般的な操作であるため、実装されていないとは信じられないため、本当に車輪を再発明する必要があることを確認しています.

4

1 に答える 1

2

Aspose.Cells は、「Worksheet.ListObjects」という名前のプロパティを使用して、ワークシート内のテーブルのリストを提供します。「ListObjects」は、Excel シートの表を表す「ListObject」タイプのコレクションです。つまり、ワークシートに複数のテーブルがある場合、ListObjects コレクションはワークシート内のすべてのテーブルに非常に便利にアクセスできることを意味します。各「ListObject」には、テーブル内のすべてのセルを指定する「DataRange」という名前のプロパティが含まれています。便宜上、DataRange はテーブルに対する次の操作に使用できます。

  1. 表のセルにスタイル/書式を適用するには
  2. データ値を取得するには
  3. 範囲内のセルを結合または移動する
  4. コンテンツのエクスポート
  5. 列挙子にテーブル セルをトラバースさせるには

DataRange からセルを選択するには、DataRange を使用して走査し、行内のすべてのセルを取得します (これは列に対しても実行できます)。

Ctrl+Shift+矢印を使用してセルを選択した後のように、テーブル セルに操作を適用するには、次のようにワークブック オブジェクトを使用して実行できます。

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 に答える