Excel 上传无法在 windows Server 2012 上运行
Excel upload not working on windows Server 2012
我开发了一个应用程序,用户必须在其中上传 winzip 存档文件。然后代码从该存档中提取一个 Excel 文件(.xls
格式,97-2003 工作簿)并将该 Excel 文件中的数据上传到我的 SQL 数据库 table。我正在使用 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 redistributable 并将提供程序更改为 Microsoft.ACE.OLEDB.12.0 但它仍然不起作用。将提供商更改为 ACE 后出现的错误是
External table is not in the expected format
另外,当我自己提取文件时,打开一次然后再次存档 - 它工作正常。我尝试了来自不同论坛的许多解决方案,但其中 none 似乎有效。我已将调试模式从 "anycpu" 更改为 "x86" 和 "x64" 但它仍然不起作用。
我已经尝试过的步骤是安装 Microsoft Access 2010 redistributable,将调试模式从 "anycpu" 更改为 "x86",将连接字符串从 [=33= .4.0 到 ACE.OLEDB.12.0.
Excel2010还是32位的应用。因此,尝试在您的 IIS 应用程序池上将 Enable 32-bit applications
设置为 True。
我开发了一个应用程序,用户必须在其中上传 winzip 存档文件。然后代码从该存档中提取一个 Excel 文件(.xls
格式,97-2003 工作簿)并将该 Excel 文件中的数据上传到我的 SQL 数据库 table。我正在使用 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 redistributable 并将提供程序更改为 Microsoft.ACE.OLEDB.12.0 但它仍然不起作用。将提供商更改为 ACE 后出现的错误是
External table is not in the expected format
另外,当我自己提取文件时,打开一次然后再次存档 - 它工作正常。我尝试了来自不同论坛的许多解决方案,但其中 none 似乎有效。我已将调试模式从 "anycpu" 更改为 "x86" 和 "x64" 但它仍然不起作用。
我已经尝试过的步骤是安装 Microsoft Access 2010 redistributable,将调试模式从 "anycpu" 更改为 "x86",将连接字符串从 [=33= .4.0 到 ACE.OLEDB.12.0.
Excel2010还是32位的应用。因此,尝试在您的 IIS 应用程序池上将 Enable 32-bit applications
设置为 True。