テーブルの操作

テーブルの操作

Aspose.Cells FOSS for Java は Excel テーブル(ListObjects または構造化参照としても知られます)をサポートします。セル範囲から新しいテーブルを作成したり、既存のテーブルを検査したり、ヘッダー行や合計行を設定したり、組み込みのテーブルスタイルを適用したり、個々の列にアクセスしたり、テーブルを通常の範囲に戻すことができます。主なエントリーポイントは ListObjectCollection で、Worksheet.getListObjects() を介してアクセスします。


概要

ワークシート上のテーブルは、Worksheet.getListObjects() が返す ListObjectCollection を通じて管理されます。各 ListObject は 1 つの Excel テーブルを表し、表示名、コメント、セル範囲の境界、列コレクション、スタイル設定、ヘッダー/合計行の表示状態を公開します。

新しいテーブルは ListObjectCollection.add(startRow, startColumn, endRow, endColumn, hasHeaders) で作成され、作成されたテーブルのゼロベースインデックスが返されます。別のオーバーロードではセル名文字列を受け取ります:ListObjectCollection.add(startCellName, endCellName, hasHeaders)


主要クラス

クラス説明
ListObject単一の Excel テーブルを表します。getDisplayName()getComment()、範囲座標、列コレクション、スタイルタイプ、ヘッダー/合計行の表示状態を公開します。
ListObjectCollectionワークシート上のすべてのテーブルのコレクションです。getCount() をサポートし、get()add()remove() によるインデックスおよび名前での検索、そしてスタイルタイプ変換ヘルパーを提供します。
ListColumnテーブル内の 1 つの列を表します。列 ID、名前、合計行の計算設定を公開します。
ListColumnCollectionテーブル内の列の順序付きコレクションです。カウントとインデックスアクセスが可能なイテラブルです。
TableStyleType組み込みの Excel テーブルスタイルを識別する列挙型 (Light 1–21、Medium 1–28、Dark 1–11、または Custom/None)。
TotalsCalculationテーブルの合計行の集計関数を表す列挙型 (SUM, COUNT, AVERAGE, MAX, MIN, STD_DEV, VAR, COUNT_NUMS, CUSTOM, NONE)。

ワークシート上のテーブルへのアクセス

Worksheet.getListObjects() を介して任意の Worksheet から ListObjectCollection を取得します。ListObjectCollection.getCount() を使用してテーブル数を確認します。個々のテーブルは、ゼロベースインデックスで ListObjectCollection.get(index) を通じて、または表示名で ListObjectCollection.get(name) を通じてアクセスできます。

Workbook wb = new Workbook("input.xlsx");
WorksheetCollection sheets = wb.getWorksheets();
Worksheet ws = sheets.get(0);
ListObjectCollection tables = ws.getListObjects();

for (int i = 0; i < tables.getCount(); i++) {
    ListObject table = tables.get(i);
    System.out.println("Table: " + table.getDisplayName()
        + " rows: " + table.getStartRow() + "-" + table.getEndRow());
}

新しいテーブルを作成する

セル範囲にテーブルを挿入するには、ListObjectCollection.add() を使用します。hasHeaders パラメータは、範囲の最初の行が列ヘッダーを含むかどうかを示します。

Workbook wb = new Workbook();
WorksheetCollection sheets = wb.getWorksheets();
Worksheet ws = sheets.get(0);

// Populate data
ws.getCells().get("A1").putValue("Product");
ws.getCells().get("B1").putValue("Quantity");
ws.getCells().get("A2").putValue("Widget");
ws.getCells().get("B2").putValue(100);

// Create table over A1:B2 with headers in row 0
int tableIndex = ws.getListObjects().add(0, 0, 1, 1, true);
ListObject table = ws.getListObjects().get(tableIndex);
table.setDisplayName("SalesTable");

テーブルプロパティの検査

ListObject 参照を保持すると、次の情報を読み取れます:

  • ListObject.getDisplayName() — テーブルの表示名文字列。
  • ListObject.getComment() — テーブルに関連付けられた任意のコメント。
  • ListObject.getStartRow() / ListObject.getStartColumn() — テーブル範囲の左上セル。
  • ListObject.getEndRow() / ListObject.getEndColumn() — テーブル範囲の右下セル。
  • ListObject.isShowHeaderRow() — ヘッダー行が表示されているかどうか。
  • ListObject.isShowTotals() — 合計行が表示されているかどうか。
  • ListObject.getListColumns() — テーブルの ListColumnCollection

テーブルのスタイリング

組み込みのテーブルスタイルを ListObject.setTableStyleType(TableStyleType) で適用します。TableStyleType 列挙体には Light (1–21)、Medium (1–28)、Dark (1–11) のバリエーションに加えて NONECUSTOM が含まれます。

ListObject table = ws.getListObjects().get(0);
table.setTableStyleType(TableStyleType.TABLE_STYLE_MEDIUM_2);

追加のスタイル切り替えで、帯状行、帯状列、そして最初/最後の列の強調を制御します:

  • ListObject.setShowTableStyleRowStripes(boolean)
  • ListObject.setShowTableStyleColumnStripes(boolean)
  • ListObject.setShowTableStyleFirstColumn(boolean)
  • ListObject.setShowTableStyleLastColumn(boolean)

また、ListObject.setTableStyleName(String) を使用してカスタムスタイル名を設定することもできます。

ヘルパーメソッド ListObjectCollection.parseTableStyleType(String)ListObjectCollection.tableStyleTypeName(TableStyleType) は、列挙型とその文字列表現の間を相互変換します。


テーブル列の操作

個々の列には ListObject.getListColumns() を介してアクセスできます。これにより ListColumnCollection が返されます。各 ListColumn は次のものを公開します:

  • ListColumn.getId() — 1 から始まる OOXML 列識別子です。
  • ListColumn.getName() / ListColumn.setName(String) — 列ヘッダーのテキストです。
  • ListColumn.getTotalsCalculation() / ListColumn.setTotalsCalculation(TotalsCalculation) — 合計行の集計関数です。
  • ListColumn.getTotalsRowLabel() / ListColumn.setTotalsRowLabel(String) — 合計行のカスタムラベルです。
  • ListColumn.getTotalsRowFormula() / ListColumn.setTotalsRowFormula(String) — 合計行のカスタム数式です。
ListObject table = ws.getListObjects().get(0);
ListColumnCollection columns = table.getListColumns();
for (int i = 0; i < columns.getCount(); i++) {
    ListColumn col = columns.get(i);
    System.out.println("Column " + col.getId() + ": " + col.getName());
}

合計行の設定

ListObject.setShowTotals(true) で合計行を有効にし、次に TotalsCalculation 列挙型を使用して列ごとの集計関数を設定します。

ListObject table = ws.getListObjects().get(0);
table.setShowTotals(true);

ListColumn qtyColumn = table.getListColumns().get(1);
qtyColumn.setTotalsCalculation(TotalsCalculation.SUM);

ListColumn labelColumn = table.getListColumns().get(0);
labelColumn.setTotalsRowLabel("Total");

テーブルのサイズ変更と変換

ListObject.resize(startRow, startColumn, endRow, endColumn, hasHeaders) を使用して、テーブルの範囲を別のセル範囲に拡大/縮小します。

ListObject.convertToRange() を使用してテーブルを通常のセル範囲に変換します。これにより、セルのデータと書式は保持されたまま、テーブル構造が削除されます。

コレクションからテーブルを完全に削除するには、ListObjectCollection.removeAt(index) を使用してください。


テーブル上の AutoFilter

テーブル上の列ドロップダウン自動フィルター矢印を表示または削除する:

  • ListObject.showAutoFilter() — ヘッダー行にフィルター矢印を表示します。
  • ListObject.removeAutoFilter() — フィルター矢印を非表示にします。

API Reference の概要

ListObject

メソッド戻り値の型説明
getDisplayName()Stringテーブルの表示名。
setDisplayName(name)void表示名を設定します。
getComment()Stringテーブル用の任意コメント。
setComment(comment)voidテーブルのコメントを設定します。
getStartRow()intテーブル範囲の開始行インデックス。
getStartColumn()intテーブル範囲の開始列インデックス。
getEndRow()intテーブル範囲の終了行インデックス。
getEndColumn()intテーブル範囲の終了列インデックス。
isShowHeaderRow()booleanヘッダー行が表示されているかどうか。
setShowHeaderRow(show)voidヘッダー行を表示または非表示にします。
isShowTotals()boolean合計行が表示されているかどうか。
setShowTotals(show)void合計行を表示または非表示にします。
getTableStyleType()TableStyleType組み込みテーブルスタイル。
setTableStyleType(type)void組み込みのテーブルスタイルを適用します。
getTableStyleName()Stringカスタムテーブルスタイル名。
setTableStyleName(name)voidカスタム テーブル スタイル名を設定します。
getListColumns()ListColumnCollectionテーブルの列コレクション。
resize(...)voidテーブルを新しい範囲にリサイズします。
convertToRange()voidテーブルを通常の範囲に変換します。
showAutoFilter()void自動フィルター矢印を表示します。
removeAutoFilter()void自動フィルター矢印を非表示にします。

ListObjectCollection

メソッド戻り値の型説明
getCount()intワークシート上のテーブル数。
get(index)ListObject指定されたゼロベースのインデックスにあるテーブルを返します。
get(name)ListObject指定された表示名を持つテーブルを返します。
add(startRow, startColumn, endRow, endColumn, hasHeaders)int新しいテーブルを作成します; そのインデックスを返します。
add(startCellName, endCellName, hasHeaders)intセル名から新しいテーブルを作成します; そのインデックスを返します。
removeAt(index)void指定されたインデックスのテーブルを削除します。
parseTableStyleType(name)TableStyleType文字列をTableStyleType列挙型の値に変換します。
tableStyleTypeName(type)StringTableStyleType列挙型を文字列名に変換します。

ListColumn

メソッド戻り値の型説明
getId()int1 から始まる OOXML 列識別子。
getName()String列ヘッダーのテキスト。
setName(name)void列ヘッダーのテキストを設定します。
getTotalsCalculation()TotalsCalculation合計行の集計関数。
setTotalsCalculation(calc)void合計行の集計を設定します。
getTotalsRowLabel()String合計行のカスタムラベル。
setTotalsRowLabel(label)void合計行のラベルを設定します。
getTotalsRowFormula()String合計行のカスタム式。
setTotalsRowFormula(formula)void合計行の数式を設定します。

制限事項

  • テーブルのデータ バインディングは個別に変更できません。テーブルは作成時に指定された範囲をカバーします。resize() を使用してカバー範囲を調整してください。
  • カスタム テーブル スタイルは、setTableStyleName() を介して名前で参照する前に、ワークブック内で定義しておく必要があります。

参照

 日本語