¿Cómo leer los datos del file Excel en el service de la nube azul de Windows?

Tengo una aplicación web que se crea con Visual Studio 2010 y usa Windows Azure SDK. Le pide al usuario que cargue un file de Excel y luego lea sus datos en la database.

Cuando ejecuto la aplicación en localhost , funciona perfectamente, pero cuando lo ejecuto usando el emulador de Windows Azure SDK (usando mi aplicación como rol web) aparece este error:

El proveedor 'Microsoft.ACE.OLEDB.12.0' no está registrado en la máquina local.

¿Cómo puedo resolver esto (aparte de usar OpenXml)?

Al parecer, no utiliza OpenXML, o utiliza una function que representa la lectura de los objects COM de Office. La razón es porque probablemente intente leer un formatting de file de Office 2003 o anterior (.XLS). OpenXML solo admite lectura directa de Office 2007 o formattings más nuevos (.XLSX).

No hay forma de leer files XLS en Azure con OpenXML. Porque para esos formattings de file, OpenXML depende de que se instale Microsoft Office Suite. Y las licencias de Microsoft no le permiten instalar Office en VM de Cloud Server. Si desea leer esos formattings de file, debe search otra biblioteca de terceros que no dependa de los proveedores de OleDB.

Para leer el file XSLX con OpenXML en Azure, asegúrese de abrir el file con SpreadsheetDocument.Open como en:

  static void ReadExcelFileDOM(string fileName) { using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(fileName, false)) { WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart; WorksheetPart worksheetPart = workbookPart.WorksheetParts.First(); SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First(); string text; int rowCount= sheetData.Elements<Row>().Count(); foreach (Row r in sheetData.Elements<Row>()) { foreach (Cell c in r.Elements<Cell>()) { text = c.CellValue.Text; Console.Write(text + " "); } } Console.WriteLine(); Console.ReadKey(); }