1
我想检索Excel工作簿中的工作表的列表,但我收回的集合有表单名称和数据列ID,这似乎被称为原定xlsx xml中的'Defined Names'。你能告诉我如何只返回工作表名称?OleDb - 检索Excel工作表名称还检索定义的名称
我正在使用的代码是沿着线:
OleDbConnection connExcel = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;"
+ @"Data Source=" + FilePath + ";"
+ @"Extended Properties=""Excel 8.0;HDR=Yes;""");
OleDbCommand cmdExcel = new OleDbCommand();
cmdExcel.Connection = connExcel;
connExcel.Open();
DataTable testTable = connExcel.GetSchema("Tables");
所产生的TestTable的集合的内容包含TABLE_NAME下的条目:
- DATA1
- DATA2
- DATA3
- DATA4
- DATA5
- 工作表Sheet1 $
- TEST1 -TEST2
- TESTHKEY
- TESTKEYS
- TESTVKEY
他们都有TABLE的TABLE_TYPE。
与上述对应的原始工作簿将有1个包含5列的工作表,第一行将包含一个标题。我只对Sheet1 $条目感兴趣。电子表格是在Excel 2010中创建的 ,我试图在用C#编写的ASP.NET 4应用程序中处理它。有可能,工作表名称可能已被更改,所以我不能保证它始终是Sheet1 $。
感谢您的回复,作为后期处理方法适合我! – Mike
经过少许挖掘,我发现当通过从SAP导出数据创建电子表格时,会自动创建定义的名称,结果输出中的每个数据列似乎都有一个元素。 元素分组在元素中的组后面的父元素下。 GetSchema方法将它们全部选为“表”。您可以通过选择功能区中的公式,然后在“定义的名称”部分中选择“名称管理器”来删除Excel中定义的名称。 –
Mike
我有类似的问题,我得到更多的工作表比实际,我没有任何定义的名称。如果我的工作表名称是“abc”,那么我有另一个名为“abc $”的工作表。任何人都可以解释为什么它的行为如此吗?我试图通过sql导入导入该文件,并且还显示了额外的工作表,我可以在打开excel文件时看到它们。 –