テーブルの操作
テーブルの操作
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) のバリエーションに加えて NONE と CUSTOM が含まれます。
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) | String | TableStyleType列挙型を文字列名に変換します。 |
ListColumn
| メソッド | 戻り値の型 | 説明 |
|---|---|---|
getId() | int | 1 から始まる OOXML 列識別子。 |
getName() | String | 列ヘッダーのテキスト。 |
setName(name) | void | 列ヘッダーのテキストを設定します。 |
getTotalsCalculation() | TotalsCalculation | 合計行の集計関数。 |
setTotalsCalculation(calc) | void | 合計行の集計を設定します。 |
getTotalsRowLabel() | String | 合計行のカスタムラベル。 |
setTotalsRowLabel(label) | void | 合計行のラベルを設定します。 |
getTotalsRowFormula() | String | 合計行のカスタム式。 |
setTotalsRowFormula(formula) | void | 合計行の数式を設定します。 |
制限事項
- テーブルのデータ バインディングは個別に変更できません。テーブルは作成時に指定された範囲をカバーします。
resize()を使用してカバー範囲を調整してください。 - カスタム テーブル スタイルは、
setTableStyleName()を介して名前で参照する前に、ワークブック内で定義しておく必要があります。