我正在使用OleDbConnection从.xlsx工作簿中检索数据。当我检索工作表的列表时,它不会识别它们中的任何一个是否已被隐藏。过去通过用下划线来结束它的名字就是这种情况,例如“Sheet1 $ _”。你知道如何知道现在隐藏吗?OleDbConnection.GetOleDbSchemaTable for .xlsx不识别隐藏的工作表
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
所有的工作表都会返回,但不显示哪些表已隐藏。 –