Asp.net 如何在Microsoft azure云服务中从excel文件读取数据?

Asp.net 如何在Microsoft azure云服务中从excel文件读取数据?,asp.net,excel,visual-studio-2010,azure,azure-cloud-services,Asp.net,Excel,Visual Studio 2010,Azure,Azure Cloud Services,我有一个使用VisualStudio2010构建并使用WindowsAzure SDK的web应用程序。它要求用户上传一个Excel文件,然后将其数据读取到数据库中 当我在localhost上运行应用程序时,它工作正常,但当我使用Windows Azure SDK emulator(将我的应用程序用作web角色)运行它时,它会出现以下错误: “Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册 我如何解决这个问题(除了使用OpenXml)?您显然没有使用OpenXml

我有一个使用VisualStudio2010构建并使用WindowsAzure SDK的web应用程序。它要求用户上传一个Excel文件,然后将其数据读取到数据库中

当我在
localhost
上运行应用程序时,它工作正常,但当我使用Windows Azure SDK emulator(将我的应用程序用作web角色)运行它时,它会出现以下错误:

“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册


我如何解决这个问题(除了使用OpenXml)?

您显然没有使用OpenXml,或者使用通过Office COM对象代理读取的功能。 原因是您可能试图读取Office 2003或更旧的文件格式(.XLS)。OpenXML仅支持直接读取Office 2007或更新的格式(.XLSX)

使用OpenXML无法读取Azure中的XLS文件。因为对于这些文件格式,OpenXML依赖于要安装的Microsoft Office套件。而且Microsoft授权不允许您在云服务器虚拟机上安装Office。如果您想读取这些文件格式,您必须找到另一个不依赖OleDB提供程序的第三方库

要在Azure上使用OpenXML读取XSLX文件,请确保只需使用
电子表格文档打开该文件。打开
类似于:

  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();
        }
static void ReadExcelFileDOM(字符串文件名)
{
使用(SpreadsheetDocument SpreadsheetDocument=SpreadsheetDocument.Open(文件名,false))
{
WorkbookPart WorkbookPart=电子表格文档.WorkbookPart;
WorksheetPart WorksheetPart=workbookPart.WorksheetParts.First();
SheetData SheetData=worksheetPart.Worksheet.Elements().First();
字符串文本;
int rowCount=sheetData.Elements().Count();
foreach(sheetData.Elements()中的r行)
{
foreach(r.Elements()中的单元格c)
{
text=c.CellValue.text;
控制台。写入(文本+“”);
}
}
Console.WriteLine();
Console.ReadKey();
}

在configuration manager中将调试CPU更改为x86,同时尝试安装Microsoft Access数据库引擎2010可再发行版,以促进2010 Microsoft Office系统文件和非Microsoft Office应用程序之间的数据传输。