OleDbConnectionを使用してExcelファイルからDataTableにデータをロードするコードを使用しています。現在、デフォルトで最初のシートになっていますが、次のコードを使用して名前を取得しています。
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=myFilename.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES"""
DataTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (schemaTable.Rows.Count > 0)
return schemaTable.Rows[0]["TABLE_NAME"].ToString();
else
return "Sheet1$"
これは、Excelドキュメント(サードパーティから受け取っている)に名前付き範囲が含まれ始めた最近まで正常に機能していました。私は私が見つけることができる隠されたシートがありません。
今
schemaTable.Rows[0]["TABLE_NAME"].ToString()
最初の範囲の名前を返します。
schemaTableオブジェクトを使用して、シート内の名前付き範囲ではなくシートのみを識別するためにできることはありますか?