加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何从windows azure云服务中的excel文件中读取数据

发布时间:2020-12-16 09:54:56 所属栏目:asp.Net 来源:网络整理
导读:我有一个使用Visual Studio 2010构建并使用 Windows Azure SDK的Web应用程序.它要求用户上传Excel文件,然后将其数据读取到数据库. 当我在localhost上运行应用程序时,它运行得很好,但是当我使用Windows Azure SDK模拟器(使用我的应用程序作为Web角色)运行它时
我有一个使用Visual Studio 2010构建并使用 Windows Azure SDK的Web应用程序.它要求用户上传Excel文件,然后将其数据读取到数据库.

当我在localhost上运行应用程序时,它运行得很好,但是当我使用Windows Azure SDK模拟器(使用我的应用程序作为Web角色)运行它时,它会出现以下错误:

The ‘Microsoft.ACE.OLEDB.12.0’ provider is not registered on the local machine.

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

解决方法

您显然不使用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();
        }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读