【问题标题】:Convert Excel (xlsx) to XML with C# and BizTalk使用 C# 和 BizTalk 将 Excel (xlsx) 转换为 XML
【发布时间】:2015-02-01 15:15:36
【问题描述】:

我已经查看了这个论坛上关于类似问题的大多数主题,但没有找到我想要的确切内容。

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

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

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

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

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

任何帮助将不胜感激。

【问题讨论】:

  • 解压并抓取 XML 内容
  • 除了解压之外,没有任何编程方式吗?
  • 使用 .zip 库进行解压!
  • 是的,我知道我可以这样做,但我有点希望我可以直接返回 xml 而不必解压缩文件...我可以通过编程方式获取工作表和工作簿,而无需通过 OpenXML 解压缩SDK,但看不到任何方法可以使用 worksheet.OuterXml 之类的东西来返回我已加载的工作表的 xml。除了解压缩并返回实际的xml文件之外,真的没有其他办法吗?
  • @Ritley572 你明白你最终使用的任何库都必须解压缩文件吗?如果您的唯一目的是获取其中的 XML 文件,那么使用库来读取文件只是添加额外的步骤。

标签: c# xml excel biztalk biztalk-2013r2


【解决方案1】:

好的,不用解压文件就知道了。

如果您使用 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();
}

【讨论】:

    猜你喜欢
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 2018-05-20
    • 2011-07-29
    相关资源
    最近更新 更多