zoukankan      html  css  js  c++  java
  • 解决Windows Server2008R2中导入Excel不能使用Jet 4.0

    操作系统使用了Windows Server2008R2(Windows Server2008R2是64位系统,同时配置IIS7.0

    原读取Excel文件代码为:

    string strConn = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='{0}';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'", FilePath);
    OleDbDataAdapter ExcelDA = new OleDbDataAdapter(“SELECT * FROM [" + strSheet + "$]“, strConn);
    
    DataSet dstExcel = new DataSet();
    ExcelDA.Fill(dstExcel, “ExcelInfo”);

    在Windows Server2003上一切正常,64位服务器上就不正常了,查找资料说,可以把将应用程序池的Enable 32 bit选项设为True,但IIS的稳定性和兼容性不太好。

    但是实际操作中改应用池32位为True也不行。

    解决方法一:

    再查资料使用Microsoft.ACE.OLEDB对Excel进行操作。修改后的脚本如下:

    string strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR=YES'", FilePath);
    DataSet dstExcel = new DataSet();
    ExcelDA.Fill(dstExcel, “ExcelInfo”);
    
    注意’Excel 12.0;HDR=YES’处的单引号不能少。

    测试后发现,应用程序池的Enable 32 bit选项设为True加上这个链接方式就正常使用了。

    解决方法二:

    装一个“AccessDatabaseEngine_X64”驱动程序,就不用修改程序池选项,再使用“Microsoft.ACE.OLEDB”链接字符串。

    在我的程序中我判断了一下操作系统的位数,来自动切换相应的链接字符串。 

    Environment.Is64BitOperatingSystem
  • 相关阅读:
    STM32学习中出现的错误
    原码 反码 补码 移码
    LiauidCrystal
    gpio 的配置
    ARM7探究
    导轨控制问题
    A4988驱动42步进电机
    arduino驱动oled
    计算机组成原理
    arduino basic issue
  • 原文地址:https://www.cnblogs.com/coolsundy/p/5732749.html
Copyright © 2011-2022 走看看