Excelブックのワークシートのリストを取得しようとしていますが、返されるコレクションには、元のxlsxxmlでは「定義済みの名前」と呼ばれているように見えるシート名とデータ列IDの両方が含まれています。ワークシート名のみを返す方法を教えてください。
私が使用しているコードは、次の行に沿っています。
OleDbConnection connExcel = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;"
+ @"Data Source=" + FilePath + ";"
+ @"Extended Properties=""Excel 8.0;HDR=Yes;""");
OleDbCommand cmdExcel = new OleDbCommand();
cmdExcel.Connection = connExcel;
connExcel.Open();
DataTable testTable = connExcel.GetSchema("Tables");
結果のtestTableコレクションの内容には、TABLE_NAMEの下に次のエントリが含まれます。
- DATA1
- DATA2
- データ3
- DATA4
- DATA5
- Sheet1 $
- TEST1 -TEST2
- TESTHKEY
- テストキー
- TESTVKEY
それらはすべてTABLE_TYPEのTABLEを持っています。
上記に対応する元のワークブックには、5列を含む1つのワークシートがあり、最初の行にはヘッダーが含まれます。Sheet1$エントリにのみ興味があります。スプレッドシートはExcel2010で作成されていますが、C#で記述されたASP.NET4アプリで処理しようとしています。ワークシートの名前が変更されている可能性があるため、常にSheet1$になることを保証することはできません。