これを行う最も簡単な方法は、DataTableCollection
とDataColumnCollection
の両方をキャストして、通常のLinqクエリを使用できるようにすることです。例えば
:彼らはジェネリックの前に戻っ日に日付としてDataTableCollection
とDataColumnCollection
の両方が唯一のIEnumerable
なくIEnumerable<T>
を実装するため
var stream = File.Open(@"C:\temp\Book1.xlsx", FileMode.Open, FileAccess.Read);
var excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
var result = excelReader.AsDataSet();
var tables = result.Tables
.Cast<DataTable>()
.Select(t => new {
TableName = t.TableName,
Columns = t.Columns
.Cast<DataColumn>()
.Select(x => x.ColumnName)
.ToList()
});
キャストが必要な理由があります。
スプレッドシートを操作するには、定義済みのテーブルが実際にデータを保持するだけでなく、実際にスプレッドシートに含まれている必要があります。
カラム名はどういう意味ですか? A、B、Cのように、Excelや? –