代码之家  ›  专栏  ›  技术社区  ›  IntelligentCancer

Excel上载在windows Server 2012上不起作用

  •  2
  • IntelligentCancer  · 技术社区  · 7 年前

    我开发了一个应用程序,用户必须上传winzip存档文件。然后,代码提取Excel文件(在 .xls 格式,97-2003工作簿),并将该Excel文件中的数据上载到我的SQL数据库表中。我正在使用 ZipFile.ExtractToDirectory(zipPath, extractPath)

    using (OleDbConnection connExcel = new OleDbConnection(Excelconstring))
    {
        using (OleDbCommand cmdExcel = new OleDbCommand())
        {
            using (OleDbDataAdapter odaExcel = new OleDbDataAdapter())
            {
                cmdExcel.Connection = connExcel;
    
                connExcel.Open();
    
                DataTable dtExcelSchema;
                string sheetName = "Chat Summary$";  
                //DateTime.Today.ToString("M.d.y$");
    
                // Read Data from First Sheet.
                cmdExcel.CommandText = "SELECT * From [" + sheetName + "]";
                odaExcel.SelectCommand = cmdExcel;
                odaExcel.Fill(dt);
                connExcel.Close();
            }
        }
    }
    

    问题是,这在我的本地系统64位Windows 7和Microsoft Office 2010上运行得非常好。我正在使用Microsoft。喷气式飞机OLEDB。4.0在我的本地系统上。问题是,当我在服务器(Windows server 2012和Microsoft Office 2013)上部署相同的代码时,这不起作用。我已在服务器上安装了Microsoft Access 2010 redistributable,并将提供程序更改为Microsoft。王牌。OLEDB。12.0但仍然不起作用。将提供程序更改为ACE后出现的错误是

    另外,当我自己提取文件时,打开一次,然后再次存档-效果很好。我在不同的论坛上尝试了很多解决方案,但似乎都不管用。我已经将调试模式从“anycpu”更改为“x86”和“x64”,但仍然无法工作。

    1 回复  |  直到 7 年前
        1
  •  2
  •   squillman Johnny Fitz    7 年前

    Excel 2010仍然是一个32位应用程序。因此,尝试设置 Enable 32-bit applications 在您的IIS应用程序池中为True。

    enter image description here