【问题标题】:Excel upload not working on windows Server 2012Excel 上传无法在 Windows Server 2012 上运行
【发布时间】:2018-03-16 01:07:53
【问题描述】:

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

以下是我用于上传 excel 的代码。

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.Jet.OLEDB.4.0。问题是当我在我的服务器(Windows Server 2012 和 Microsoft Office 2013)上部署相同的代码时,这不起作用。我已经在服务器上安装了 Microsoft Access 2010 可再发行组件并将提供程序更改为 Microsoft.ACE.OLEDB.12.0,但它仍然无法正常工作。将提供程序更改为 ACE 后出现的错误是

外部表不是预期的格式

另外,当我自己提取文件时,打开它一次然后再次存档 - 它工作正常。我尝试了来自不同论坛的许多解决方案,但似乎没有一个有效。我已将调试模式从“anycpu”更改为“x86”和“x64”,但仍然无法正常工作。

我已经尝试过的步骤是安装 Microsoft Access 2010 可再发行组件,将调试模式从“anycpu”更改为“x86”,将连接字符串从 Jet.OLEDB.4.0 更改为 ACE.OLEDB.12.0。

【问题讨论】:

  • “我尝试了来自不同论坛的许多解决方案,但似乎没有一个有效” 向我们展示您的尝试。我们不会因为“我已经尝试过”而拒绝提出建议
  • 你为什么要关闭连接然后立即重新打开它?
  • @Amy 我已经编辑了我的问题,我已经从不同的论坛尝试过这些步骤。梅森这是一个错误道歉。
  • 这行得通!谢谢!:)
  • @IntelligentCancer 我将我的评论移至答案,以便您接受

标签: c# oledb ms-jet-ace


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    相关资源
    最近更新 更多