4

我已经查看了该论坛上有关类似问题的大多数主题,但没有找到我正在寻找的确切内容。

我正在尝试编写一个管道组件以BizTalk 2013 R2使用 C# 将传入Excel 2010 .xlsx文件简单地转换为它的裸/基本 XML 表示。

我不想针对它运行任何模板或 XLST 转换它或类似的东西。我只是想按原样返回所述电子表格的底层 XML 表示。

看起来这应该是一项非常容易的任务,但我根本不知道该怎么做。

我发现的所有内容都需要使用DataTables并循环遍历行和单元格(通过OpenXML)以输出更易于阅读的特定 XML 表示,但这不是我想要的。

我想要该电子表格的实际 Microsoft XML 表示。

任何帮助将不胜感激。

4

1 回答 1

2

好的,无需解压缩文件即可解决。

如果您使用 SAX 方法将工作表加载到OpenXmlReader此处找到:

https://msdn.microsoft.com/en-us/library/office/gg575571(v=office.15).aspx

然后,您可以使用阅读器获得OuterXml类似的信息:

using (SpreadsheetDocument spreadSheetDocument = SpreadsheetDocument.Open(filepath, false))
{
    WorkbookPart wbPart = spreadSheetDocument.WorkbookPart;

    OpenXmlReader reader = OpenXmlReader.Create(wbPart);

    while (reader.Read())
    {
        if (reader.ElementType == typeof(Sheet))
        {
            Sheet sheet = (Sheet)reader.LoadCurrentElement();

            WorksheetPart wsPart = (WorksheetPart)(wbPart.GetPartById(sheet.Id));

            OpenXmlReader wsReader = OpenXmlReader.Create(wsPart);
            while (wsReader.Read())
            {
                if(wsReader.ElementType == typeof(Worksheet))
                {
                    Worksheet wsPartXml = (Worksheet)wsReader.LoadCurrentElement();
                    Console.WriteLine(wsPartXml.OuterXml + "\n");
                }
            }
        }
    }
    Console.ReadKey();
}
于 2015-02-02T18:35:29.897 回答