Я занимаюсь разработкой веб-приложения (C #) на Windows 7 Enterprise (x64) с Office 2007 с использованием Visual Web Developper 2010 Express. В том проекте, который читает информацию из файлов Excel примерно так:
protected void Page_Load(object sender, EventArgs e)
{
string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\1.xlsx;Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";
OleDbConnection oleDbConn = new OleDbConnection(connString);
try
{
oleDbConn.Open();
OleDbCommand oleDbComm = new OleDbCommand("SELECT * FROM [Sheet1$]", oleDbConn);
OleDbDataAdapter oleDbDtAdapter = new OleDbDataAdapter();
oleDbDtAdapter.SelectCommand = oleDbComm;
oleDbConn.Close();
}
catch (Exception evt)
{
Response.Write("ERRO: " + evt.Message.ToString());
}
}
На ПК для разработки все работает как надо, и я могу открыть файлы XLS и XLSX.
Теперь, передав этот простой код моему серверу развертывания с Windows Server 2003 R2 Standard X64 Edition (SP2), мне пришлось установить Access Database Engine 2007 (только для x86), поскольку на сервере не было Office 2007, поэтому после установка и развертывание этого простого кода на сервере, который я получил IErrorInfo.GetDescription, завершились ошибкой E_FAIL (0x80004005).
Еще несколько поисков, и я обнаружил, что существует Access Database Engine 2010, на этот раз для бот-архитектуры x86 и x64, поэтому я подумал, что сейчас все готово.
После установки Access Database Engine 2010 вуаля, я смог получить доступ к файлу XLS, но для XLSX я теперь получаю эту сумасшедшую ошибку:
Внешняя таблица не в ожидаемом формате
Я уже почти сутки бьюсь головой, но до сих пор не могу понять, почему это происходит!