office交流网--QQ交流群号

Access培训群:792054000         Excel免费交流群群:686050929          Outlook交流群:221378704    

Word交流群:218156588             PPT交流群:324131555

'_xlnm._FilterDatabase$' 不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长。

2021-02-13 08:00:00
陈熙之
转贴:
https://blog.csdn.net/cmhdl521/article/details/105512818/
5677
'_xlnm._FilterDatabase$' 不是一个有效名称


'_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;
}
分享