zoukankan      html  css  js  c++  java
  • 导入excel错误:外部表不是预期的格式 解决方案

    环境:win7+iis7+Office2007 

    在asp.net网站中导出Excel文件后,再把文件导入到数据库中。 读取Excel文件时,打开连接出错。

    错误为:外部表不是预期的格式

    解决:检查了一下,导出的Excel是标准文件不是html,没错,Excel文件正常。 

      调试代码,创建连接对象oleDbConnection也正常,但在conn.Open()打开链接时出错。 

    仔细看了下链接字符串,检查出了错误,Excel版本问题,Exce连接字符串版本是office2003的 ,更改为Excel2007版本则正常导入。 

    总结规则如下:

    using System.Data.OleDb;
    using System.Data;
    
     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(); 
            }


  • 相关阅读:
    Binary Search Tree Iterator 解答
    Invert Binary Tree 解答
    Min Stack 解答
    Trapping Raining Water 解答
    Candy 解答
    Jump Game II 解答
    Implement Hash Map Using Primitive Types
    Gas Station 解答
    Bucket Sort
    HashMap 专题
  • 原文地址:https://www.cnblogs.com/wybshyy/p/13783732.html
Copyright © 2011-2022 走看看