外部表不是预期的格式-excel

在操作excel将数据从外部导入到数据库时,

刚开始操作的没有问题的,却报出了:“外部表不是预期的格式”错误信息。

仔细查看excel没有问题,

查阅资料,发现有人说:

public void ReadExcelFiless()
        {
            //string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + Server.MapPath("ExcelFiles/MyExcelFile.xls") + ";Extended Properties='Excel 8.0; HDR=Yes; IMEX=1'"; //此连接只能操作Excel2007之前(.xls)文件
            string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + Server.MapPath("ExcelFiles/Mydata2007.xlsx") + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'"; //此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串)
//备注: "HDR=yes;"是说Excel文件的第一行是列名而不是数据,"HDR=No;"正好与前面的相反。
//      "IMEX=1 "如果列中的数据类型不一致,使用"IMEX=1"可必免数据类型冲突。

            OleDbConnection conn = new OleDbConnection(strConn);
            OleDbDataAdapter adp = new OleDbDataAdapter("Select * from [Sheet1$]", conn);
            DataSet ds = new DataSet();
            adp.Fill(ds, "Book1");
            this.GridView1.DataSource = ds.Tables["Book1"].DefaultView;
            this.GridView1.DataBind();
        }

解决方法: 用记事本打开你的excel文件,看看显示是否为乱码。 若是html代码,则表示你的excel文件格式不是标准的excel格式,才会提示“外部表不是预期的格式”的错误; 若是乱码,我这边测试是不会提示这个错误的,可以成功导入。
其实出现这个错误的原因是,你的Excel是从程序中导出的,并且是使用  Response的方式直接把html代码输出到Excel中的  其实是可以解决的,导出的时候使用Excel操作Api来导出就是标准格式 ----------------------------------------------------------------------------------------------------- 遇到了这个问题,Response输出的EXCEL文件修改后上传更新时出错, “外部表不是预期的格式” 解决方式: 1.用EXCEL另存为功能另存成标准格式XLS格式(Response导出的其实是网页文件)

 

posted @ 2014-11-06 09:22  silence2010  阅读(510)  评论(0)    收藏  举报