zoukankan      html  css  js  c++  java
  • 解决方法of未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

    在开发的一个报表转换功能涉及到Excel97-2003(.xls)文件的导入。使用oledb来读取excel数据。代码为:

    public static DataSet LoadDataFromExcel(string filePath, string[] sheetNames)
    {
        string strConn;
        //  strConn = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + filePath + ";Extended Properties=Excel 8.0";  
        //strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties="Excel 12.0 Xml;HDR=No"";  //这是2010的链接字符串,不同版本链接不同
        strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
        OleDbConnection OleConn = new OleDbConnection(strConn);
        OleConn.Open();
        DataSet OleDsExcle = new DataSet();
        foreach (string name in sheetNames)
        {
            string sql = "SELECT * FROM [" + name + "$]";
            OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
            OleDaExcel.Fill(OleDsExcle, name);
        }
        OleConn.Close();
        return OleDsExcle;
    }

    我使用的IDE是vs2013,OS是win7 64位,调试程序时报异常:

    “System.InvalidOperationException”类型的未经处理的异常在 System.Data.dll 中发生

    其他信息: 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。

    解决方法为:

    在项目属性的“生成“里,将目标平台由默认的Any CPU改为x86

    ps: 对于web网站,excel导入用OLEDB同样会报错:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

    这时,需要修改app pool的设置。“应用程序池默认属性”/“常规”/”启用32位应用程序”,设置为 true。

    看来,使用OLEDB还是要付出代价的,呵呵。 使用NPOI则不需要任何设置哦~

  • 相关阅读:
    lightoj1140_数位dp
    lightoj1057_状压dp
    lightoj1068_数位dp
    lightoj1018_状压dp
    lightoj1217_简单dp
    lightoj1119_简单状压dp
    lightoj1037_状压dp
    lightoj1110_LCS并输出
    图论算法----最短路
    poj1182 食物链
  • 原文地址:https://www.cnblogs.com/buguge/p/4845997.html
Copyright © 2011-2022 走看看