读取exl出错 外部表不是预期的格式

时间:2021-07-15 20:33:01
外部表不是预期的格式。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.Data.OleDb.OleDbException: 外部表不是预期的格式。

源错误: 


行 31:               
行 32:                 conn = new OleDbConnection(connString);
行 33:                 if (conn.State == ConnectionState.Closed || conn.State == ConnectionState.Broken) conn.Open();
行 34:                 //返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等  
行 35:                 DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
 

源文件: f:\dailys\daily\UI\txt\Uploat.aspx.cs    行: 33 


 


public DataSet ExecleDs(string filenameurl, string table)
    {
        string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filenameurl + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";
        OleDbConnection conn = new OleDbConnection(strConn);
       
        OleDbDataAdapter odda = new OleDbDataAdapter("select * from [Book$]", conn);
        DataSet ds = new DataSet();
        odda.Fill(ds, table);
        conn.Close();
        return ds;
    }

23 个解决方案

#1


excel另存一下试试

#2


EXCEL格式不对..你的可能是CSV格式的.

#3


EXCEL规则么。
有合并单元格之类的东西没。
 DataTable Excel_UserInfo = new DataTable();
string strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileInfo.FullName + ";" + "Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1;\"";
                string strExcel = "select * from [sheet1$]";

                using (OleDbDataAdapter adaptor = new OleDbDataAdapter(strExcel, strConn))
                {
                    DataSet ds = new DataSet();
                    adaptor.Fill(ds);
                    Excel_UserInfo = ds.Tables[0];
                }

#4


excel中是不是有表头或者合并列,这样的话会出现列错误,单纯复制里面的内容到一个新的工作区试试

#5


解决了谢谢大家

#6


能否分享分享....大家都是急用啊!

#7


Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 8.0;    office2007这样写就ok啦

#8


zzlrpg :你上面那个也不行啊
Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 8.0; office2007这样写就ok啦

#9


office 2007 怎么老报外部表不是预期的格式
求答案!!!!

#10


不厚道啊 只顾自己解决

#11


读取exl出错 外部表不是预期的格式
灭了楼主!

#12


引用 11 楼 dapeng240 的回复:
灭了楼主!


http://blog.csdn.net/zhou349398998/article/details/8740424

#13


Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 8.0;  这样写2007和2003的都适合

#14


太不厚道了 灭了

#15


自己问题解决了 , 就不管别人了  ,啥子人嘛  ,只晓得索取,,不晓得汇报 ,艹

#16


急用啊,给个答案啊

#17


楼主不厚道,以后楼主发的帖坚决不看

#18


楼主不回答,我帮大家回答!
excel 2003 使用的驱动是:
   strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";

Excel 2010 使用的驱动
strConn = "Provider= Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";

注意两个连接使用的驱动是不一样的 
Provider=Microsoft.Jet.OLEDB.4.0  
Provider= Microsoft.ACE.OLEDB.12.0

#19


我用的18楼的方式,还是报这个错,为啥

#20


引用 19 楼 dengmao203 的回复:
我用的18楼的方式,还是报这个错,为啥

我的问题解决了,来这里回复下。
我安装了Microsoft.ACE.OLEDB.12.0驱动,但是测试时一直有问题,提示如题。
后来发现我的framework版本是2.0
修改成4.0后问题解决。
---------------------------------
ps:
我本地安装的office版本是2013,安装的驱动是12.0的

#21


引用 2 楼 zgke 的回复:
EXCEL格式不对..你的可能是CSV格式的.


我也遇到了相同的问题,csv文件导入datagridview的代码是怎样的?求指点 读取exl出错 外部表不是预期的格式

#22


excel中不能有合并单元格之类的

#23


 我一样有这个错误,但是只要我excel是打开的时候就没问题。

#1


excel另存一下试试

#2


EXCEL格式不对..你的可能是CSV格式的.

#3


EXCEL规则么。
有合并单元格之类的东西没。
 DataTable Excel_UserInfo = new DataTable();
string strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileInfo.FullName + ";" + "Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1;\"";
                string strExcel = "select * from [sheet1$]";

                using (OleDbDataAdapter adaptor = new OleDbDataAdapter(strExcel, strConn))
                {
                    DataSet ds = new DataSet();
                    adaptor.Fill(ds);
                    Excel_UserInfo = ds.Tables[0];
                }

#4


excel中是不是有表头或者合并列,这样的话会出现列错误,单纯复制里面的内容到一个新的工作区试试

#5


解决了谢谢大家

#6


能否分享分享....大家都是急用啊!

#7


Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 8.0;    office2007这样写就ok啦

#8


zzlrpg :你上面那个也不行啊
Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 8.0; office2007这样写就ok啦

#9


office 2007 怎么老报外部表不是预期的格式
求答案!!!!

#10


不厚道啊 只顾自己解决

#11


读取exl出错 外部表不是预期的格式
灭了楼主!

#12


引用 11 楼 dapeng240 的回复:
灭了楼主!


http://blog.csdn.net/zhou349398998/article/details/8740424

#13


Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 8.0;  这样写2007和2003的都适合

#14


太不厚道了 灭了

#15


自己问题解决了 , 就不管别人了  ,啥子人嘛  ,只晓得索取,,不晓得汇报 ,艹

#16


急用啊,给个答案啊

#17


楼主不厚道,以后楼主发的帖坚决不看

#18


楼主不回答,我帮大家回答!
excel 2003 使用的驱动是:
   strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";

Excel 2010 使用的驱动
strConn = "Provider= Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";

注意两个连接使用的驱动是不一样的 
Provider=Microsoft.Jet.OLEDB.4.0  
Provider= Microsoft.ACE.OLEDB.12.0

#19


我用的18楼的方式,还是报这个错,为啥

#20


引用 19 楼 dengmao203 的回复:
我用的18楼的方式,还是报这个错,为啥

我的问题解决了,来这里回复下。
我安装了Microsoft.ACE.OLEDB.12.0驱动,但是测试时一直有问题,提示如题。
后来发现我的framework版本是2.0
修改成4.0后问题解决。
---------------------------------
ps:
我本地安装的office版本是2013,安装的驱动是12.0的

#21


引用 2 楼 zgke 的回复:
EXCEL格式不对..你的可能是CSV格式的.


我也遇到了相同的问题,csv文件导入datagridview的代码是怎样的?求指点 读取exl出错 外部表不是预期的格式

#22


excel中不能有合并单元格之类的

#23


 我一样有这个错误,但是只要我excel是打开的时候就没问题。