连接EXCEL "外部表不是预期的格式。"错误

时间:2021-08-29 23:18:01
EXCEL文档没有打开时,报错误"外部表不是预期的格式。"
打开EXCEL文档时,能正常取到数据,
请问下是什么原因,如何解决?谢谢
代码如下(红色字体是抛异常的语句):
 private DataSet GetDsFromExcel(string excelFilePath)
        {
            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFilePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
            OleDbConnection OleConn = new OleDbConnection(strConn);

            try
            {
                // 打开数据源
                OleConn.Open();

                // 取得第一个sheet的名称
                DataTable schemaTable = OleConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
                string tableName = schemaTable.Rows[0][2].ToString().Trim();

                // 填充DataSet
                String sql = "SELECT * FROM  [" + tableName + "]";
                OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
                DataSet OleDsExcle = new DataSet();
                OleDaExcel.Fill(OleDsExcle, "myTable");

                return OleDsExcle;
            }
            catch (Exception ex)
            {
                m_objLog.Error(ex);
                return null;
            }
            finally
            {
                // 关闭连接
                OleConn.Close();
            }
        }

9 个解决方案

#1


在线等, 连接EXCEL "外部表不是预期的格式。"错误

#2


excel应该不是excel文件类型,虽然后缀是xls,你可以通过将文件另存为的方式重新指定为excel文件

#3


这种情况主要出现在将网页中的数据导出到excel表格中的情况

#4


Microsoft.Jet.OLEDB.4.0这是针对老版本excel的,新版本你要升级的,V12

#6


引用 2 楼 hard_learner 的回复:
excel应该不是excel文件类型,虽然后缀是xls,你可以通过将文件另存为的方式重新指定为excel文件


文件是excel文件类型,excel2007,后缀是xlsx,把该文件打开时,可以正确取得数据

#7


引用 5 楼 zhujiazhi 的回复:
希望有帮助的
http://blog.csdn.net/jiajiayouba/article/details/7531707

正解,当excel文件为Excel 2007 时,
使用Microsoft.Jet.OLEDB. 4.0 and Extended Properties=Excel  8.0时会出现问题,
修改成12.0
Microsoft.ACE.OLEDB.12.0,Extended Properties=Excel 12.0

#8


引用 7 楼 dll_1 的回复:
Quote: 引用 5 楼 zhujiazhi 的回复:

希望有帮助的
http://blog.csdn.net/jiajiayouba/article/details/7531707

正解,当excel文件为Excel 2007 时,
使用Microsoft.Jet.OLEDB. 4.0 and Extended Properties=Excel  8.0时会出现问题,
修改成12.0
Microsoft.ACE.OLEDB.12.0,Extended Properties=Excel 12.0

你好,我的问题和你的一样,按你所说的方式改了后,还是会出现错误

#9


excel2013遇到同样的问题怎么解决啊?各位有会的吗?

#1


在线等, 连接EXCEL "外部表不是预期的格式。"错误

#2


excel应该不是excel文件类型,虽然后缀是xls,你可以通过将文件另存为的方式重新指定为excel文件

#3


这种情况主要出现在将网页中的数据导出到excel表格中的情况

#4


Microsoft.Jet.OLEDB.4.0这是针对老版本excel的,新版本你要升级的,V12

#5


#6


引用 2 楼 hard_learner 的回复:
excel应该不是excel文件类型,虽然后缀是xls,你可以通过将文件另存为的方式重新指定为excel文件


文件是excel文件类型,excel2007,后缀是xlsx,把该文件打开时,可以正确取得数据

#7


引用 5 楼 zhujiazhi 的回复:
希望有帮助的
http://blog.csdn.net/jiajiayouba/article/details/7531707

正解,当excel文件为Excel 2007 时,
使用Microsoft.Jet.OLEDB. 4.0 and Extended Properties=Excel  8.0时会出现问题,
修改成12.0
Microsoft.ACE.OLEDB.12.0,Extended Properties=Excel 12.0

#8


引用 7 楼 dll_1 的回复:
Quote: 引用 5 楼 zhujiazhi 的回复:

希望有帮助的
http://blog.csdn.net/jiajiayouba/article/details/7531707

正解,当excel文件为Excel 2007 时,
使用Microsoft.Jet.OLEDB. 4.0 and Extended Properties=Excel  8.0时会出现问题,
修改成12.0
Microsoft.ACE.OLEDB.12.0,Extended Properties=Excel 12.0

你好,我的问题和你的一样,按你所说的方式改了后,还是会出现错误

#9


excel2013遇到同样的问题怎么解决啊?各位有会的吗?