GetOleDbSchemaTable(OleDbSchemaGuid.Columns,null)错误

时间:2013-10-25 15:43:10

标签: c# .net excel import oledb

使用以下代码读取C#中特定Excel工作簿的列时出错:

        DataTable dtCols = new DataTable();
        try
        {
            dtCols = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, null);
        }
  

System.Data.OleDb.OleDbException(0x80004005):Microsoft Jet数据库引擎找不到对象'Sheet1 $ _'。确保对象存在,并且您正确拼写其名称和路径名称。

我的工作表名称是名称“Sheet1”,但显然系统正在尝试读取模式中某个隐藏表的列 - 请注意该工作表名称末尾有一个下划线。

如何防止该行代码错误输出?有没有办法利用limits参数来解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:0)

您需要在方法调用中指定工作表,否则它不知道要加载哪些列。它正在加载Sheet1 $作为您的电子表格中不存在的默认值。

试,

    var list = new List<string>();
    DataTable dtColumns = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new string[] { null, null, workSheetName, null });
    foreach (DataRow dr in dtColumns.Rows)
        list.Add(dr[3].ToString());