Я разрабатываю веб-приложение (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, на этот раз для архитектуры bot x86 и x64, поэтому я подумал, что duuhhh теперь это работа gona.
После установки базы данных Access Engine 2010 вуаля я был в состоянии получить доступ к файлу XLS, но для XLSX я теперь получаю эту безумную ошибку:
Внешняя таблица не в ожидаемом формате
Я был ударяя голову почти на целый день, но все еще не могу понять, почему это происходит!
Пожалуйста, не забывайте использовать кнопку коды {} Это делает жизнь каждую более приятной. – Fionnuala