OpenXML API を使用してセル データを取得する方法について、Web でたくさんの情報を読みました。しかし、特に簡単なものはあまりありません。ほとんどは、読み取りではなく、SpreadsheetML への書き込みに関するものであるように思われますが、それでもあまり役に立ちません。テーブルを含むスプレッドシートがあります。テーブル名が何であるかを知っており、それがどのシートにあり、どの列がテーブルにあるかを知ることができます。しかし、テーブル内のデータを含む行のコレクションを取得する方法がわかりません。
ドキュメントをロードしてワークブックへのハンドルを取得するには、次のようにします。
SpreadsheetDocument document = SpreadsheetDocument.Open("file.xlsx", false);
WorkbookPart workbook = document.WorkbookPart;
テーブル/シートを見つけるためにこれを持っています:
Table table = null;
foreach (Sheet sheet in workbook.Workbook.GetFirstChild<Sheets>())
{
WorksheetPart worksheetPart = (WorksheetPart)document.WorkbookPart.GetPartById(sheet.Id);
foreach (TableDefinitionPart tableDefinitionPart in worksheetPart.TableDefinitionParts)
{
if (tableDefinitionPart.Table.DisplayName == this._tableName)
{
table = tableDefinitionPart.Table;
break;
}
}
}
また、table.TableColumns を foreaching することで、テーブル内の列を反復処理できます。