做了很多次读取Execl的功能了。今天头一次碰到这个问题:
'_xlnm._FilterDatabase$' 不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长。
今天是准备不考虑一个Execl有多少个表,表名叫什么。
通过下面代码:
DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
for (int i = 0; i < schemaTable.Rows.Count; i++)
{
//schemaTable.Rows[i][2]每行第2列 或者"TABLE_NAME" 为表/选项卡名
string TableName = schemaTable.Rows[i]["TABLE_NAME"].ToString();
}
突然发现这样一个异常。打开Execl查看,的确没有'_xlnm._FilterDatabase$'这个鬼东西
但是读取出来的确有3个表。
发现Filter这个单词是过滤,重新打开看了下,的确是有过滤的。

去掉去掉,再试正常了,然后找了一张干净的表,再试试,也没问题。
好吧,避免Execl中存在过滤 会多一个 _xlnm._FilterDatabase$ 恶心的表,加个判断吧。
if (TableName.Contains("_FilterDatabase"))
{
continue;
}

本文探讨了在读取Excel文件时遇到'_xlnm._FilterDatabase$'无效名称异常的问题,通过代码示例展示了如何识别和跳过含有过滤器的表,确保数据读取的准确性。
3661

被折叠的 条评论
为什么被折叠?



