各位大虾,我在64位win2003 SP2的电脑上,想用excel做数据源直接读取,使用以下代码,总是报错
电脑上已安装office2003
WindowsServer2003.WindowsXP-KB948459-v2-x64-ENU.exe这个补丁也打了
还是没有任何作用System.InvalidOperationException: 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\d1.xls;Extended Properties=Excel 8.0;";
         OleDbConnection con = new OleDbConnection(strConn);
         con.Open();
        DataSet ds = null;
        try
        {
            ds = new DataSet();            string strExcel = "select * from [Sheet1$]";
            OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel, con);
            myCommand.Fill(ds, "table1");
            con.Close();
        }
        catch (Exception ex)
        {
            con.Close();
        }        DataGrid1.DataSource = ds.Tables["table1"].DefaultView;
        DataGrid1.DataBind();

解决方案 »

  1.   

    try: 
            生成-> 配置管理器-> 平台-> 点击Any   Cpu选项卡-> 新建-> 新建平台-> X86
      

  2.   

    另外,LZ的IIS用的是什么.Net Framework,好像64位的.NET Framework不行,目前的excel驱动似乎只有32位的ASP.NET 2.0,32 位版本
    要运行 32 位版本的 ASP.NET 2.0,请按照以下步骤操作:1. 单击“开始”,单击“运行”,键入 cmd,然后单击“确定”。 
    2. 键入以下命令启用 32 位模式:
    cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1 
    3. 键入以下命令,安装 ASP.NET 2.0(32 位)版本并在 IIS 根目录下安装脚本映射:
    %SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i 
    4. 确保在 Internet 信息服务管理器的 Web 服务扩展列表中,将 ASP.NET 版本 2.0.40607(32 位)的状态设置为允许。 这个是如果这种方法不成功的话,可以切回64位ASP.NET 2.0,64 位版本
    要运行 64 位版本的 ASP.NET 2.0,请按照以下步骤操作:1. 单击“开始”,单击“运行”,键入 cmd,然后单击“确定”。 
    2. 键入以下命令禁用 32 位模式:
    cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 0 
    3. 键入以下命令,安装 ASP.NET 2.0 版本并在 IIS 根目录下安装脚本映射:
    %SYSTEMROOT%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -i 
    4. 确保在 Internet 信息服务管理器的 Web 服务扩展列表中,将 ASP.NET 版本 2.0.40607 的状态设置为允许。 
    注意:ASP.NET 2.0 的内部版本可能随当前发行的内部版本的变化而变化。这些步骤适用于内部版本 v2.0.50727。如果是其他版本的.Net Framework,把 \v2.0.50727\ 改一下就行比如1.1的就是\v1.1.4322\
      

  3.   

    Microsoft.Jet.OLEDB.4.0 数据库引擎目前没有提供64位版本。
    而64位程序又不能调用32位的版本,所以1楼正解:
    生成-> 配置管理器-> 平台-> 点击Any  Cpu选项卡-> 新建-> 新建平台-> X86
      

  4.   

    谢谢各位参与
    我的VS环境下,没有【Any  Cpu选项卡】这个选项,或者说我不知道怎么调吧按3L的那方法才解决,我现在把IIS的.NET Framework改成了32位,只是不知道会不会对别的有什么影响
    不过先不管那么多了,反正我开发的时候也是32位环境下的