2017-01-11 232 views
2

私は、OLDEB(AccessDatabaseEngine)ライブラリのような他の依存関係なしにExcelファイルを読むためにC#ライブラリを作成しています。exceldatareaderを使用してシートの列名を取得する

したがって、.XLSと.XLSXファイルを読み込むためのExcelDataReaderライブラリを選択しました。

ExcelDataReaderは、ローカルとデプロイメントサーバー環境で両方のファイル形式を使用しています。

私は特定のExcelファイルからすべての列名を取得する方法に問題がありますか?

+0

カラム名はどういう意味ですか? A、B、Cのように、Excelや? –

答えて

0

これを行う最も簡単な方法は、DataTableCollectionDataColumnCollectionの両方をキャストして、通常のLinqクエリを使用できるようにすることです。例えば

:彼らはジェネリックの前に戻っ日に日付としてDataTableCollectionDataColumnCollectionの両方が唯一の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() 
          }); 

キャストが必要な理由があります。

スプレッドシートを操作するには、定義済みのテーブルが実際にデータを保持するだけでなく、実際にスプレッドシートに含まれている必要があります。

関連する問題