在C#使用OleDb读取Excel表格数据时,出现外部表不是预期的格式,这个问题也是偶现的

这个问题真的很奇怪,一开始也不知为什么,后面问题出现多了,总结出来,是因为在读取表格数据时需要打开Excel表格,试了很多次都是这样,没有打开表格时就出错,打开表格就正常

代码如下:

/// <summary>
/// 读取excel返回DataTable
/// </summary>
/// <param name="fileName"></param>
/// <param name="sheetName"></param>
/// <returns></returns>
private System.Data.DataTable ExcelToDataTable(string fileName, string sheetName)
    System.Data.DataTable dt = null;
        string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties='Excel 8.0;HDR=No;IMEX=1;'";
        string selectCommandText = "SELECT * FROM [" + sheetName + "$]";
        using (OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommandText, connectionString))
            dt = new System.Data.DataTable();
            adapter.Fill(dt);
            return dt;
    catch(Exception ex)
        MessageBox.Show(ex.ToString());
    return dt;

解决方法:打开需要操作的Excel表格再执行读取操作

20200424

后面发现这是由于公司的加密系统导致的,excel文件解密后即可

目前碰到了一个在c#.net中导出excel文件,再导入时提示如下信息的错误: 外部不是预期格式 只能通过将导出的xls文件另存为相同的xls文件,相当于通过excel格式转换功能,将格式正确化. 通过这种方式才能再次导入而不出错. 我用的是网上提供一个Exc 在C#使用OleDb读取Excel格数据时,出现外部不是预期格式这个提示 这个问题就很奇怪,打开格执行程序就正常,不打开格执行就报错,搜索了一下解决办法,总过差不多有以下几种解决办法。 代码如下: private void bind(string fileName) string strConn = "Provider=Microsoft... 每次总是catch(Exception ee){    MesageBox.Show(ee.Message);}昨天晚上看书,发现了fcl里面很多Exception 的继承类,可以提供更多的一场相关信息。今天找了OleDbException ,巴适!      catch(System.Data.OleDb.OleDbException ee)      {       for (int j=0; 目前我遇到的是写excel,会出“System.Data.OleDb.OleDbException, 0x80004005 外部数据库驱动程序 (1) 中的意外错误问题网上搜了下,解决办法是这个,目前我是进行删除了补丁原因:由于微软在2017-10-10更新了安全补丁(KB4041678,KB4041681),两个补丁的更新内容中,都包含有这个更新内容(Security updates to Mi... Asp.Net中用OLEDB读dbf文件,报“外部不是预期格式”错误 我的代码如下string tempfile = filePrefix + Year + Month + ssdm;fileName=serverPath+@"OutPutDataFiles/"+tempfile+".dbf"; File.Copy(serverPath+@"OutPutDat 最近在做一个Excel数据导入到数据库的功能,读取Excel文件时,打开连接出错。错误为:外部不是预期格式解决方法:检查了一下,导出的Excel是标准文件不是html,没错,Excel文件正常。   调试代码发现创建连接对象oleDbConnection时就出错了。仔细看了下连接字符串,检查出了错误,Excel版本问题,Excel连接字符串版本是office2003的,就更改为Excel200... 很多人换了2007后,问的最多的问题之一是2003里最经典的ADO中的“provider=Microsoft.Jet.OLEDB.4.0”这句怎么不能用了。   百度一下可以了解到,Microsoft.Jet.OLEDB.4.0是Microsoft Jet引擎,这适用于2003