我有一个使用Visual Studio 2010构建并使用Windows Azure SDK的Web应用程序。它要求用户上传Excel文件,然后将其数据读入数据库。
当我在localhost
上运行应用程序时,它运行正常,但是当我使用Windows Azure SDK模拟器(使用我的应用程序作为Web角色)运行它时,它会出现此错误:
' Microsoft.ACE.OLEDB.12.0'提供程序未在本地计算机上注册。
如何解决此问题(使用OpenXml除外)?
答案 0 :(得分:3)
您显然不使用OpenXML,或使用代理通过Office COM对象进行读取的功能。 原因是您可能尝试读取Office 2003或更旧的文件格式(.XLS)。 OpenXML仅支持直接读取Office 2007或更新的格式(.XLSX)。
无法使用OpenXML读取Azure中的XLS文件。因为对于那些文件格式,OpenXML依赖于Microsoft Office套件来安装。 Microsoft许可不允许您在云服务器VM上安装Office。如果您想要阅读这些文件格式,您必须找到另一个不依赖于OleDB提供程序的第三方库。
要在Azure上使用OpenXML读取XSLX文件,请确保只需使用SpreadsheetDocument.Open
打开文件,如下所示:
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();
}