OleDbConnectionを使用して、.xlsxブックからデータを取得しています。ワークシートのリストを取得するときに、それらのどれかが隠されているかどうかはわかりません。これは、 "Sheet1 $ _"のように、アンダースコアを使って名前を終えることで使用されていました。これが今隠されているかどうかを知る方法を知っていますか?.xlsxのOleDbConnection.GetOleDbSchemaTableは、非表示のワークシートを識別しません。
using (var connection =
new OleDbConnection(string.Concat("Provider=Microsoft.ACE.OLEDB.12.0;Mode=Read;Data Source=",
fileName,
";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"")))
using (var command = new OleDbCommand("", connection))
{
connection.Open();
var listedSheets = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
new object[] {null, null, null, "Table"});
if (listedSheets != null)
{
var sheetNames = new List<string>(listedSheets.Rows.Count);
foreach (DataRow row in listedSheets.Rows)
{
sheetNames.Add(row[2].ToString());
}
return sheetNames;
}
return new List<string>();
}
私はあなたが非表示のシートを得るか、混乱していますが、あなたは隠されたとしてフラグ彼らにあなたのコードをしたい、またはあなたがすべてでそれらを得ることはありませんか? – Gouda
すべてのシートは、どのシートが隠されているかを知らさずに返されます。 –