使用C#和BizTalk将Excel(xlsx)转换为XML

我已经在这个论坛上讨论了类似的问题,但没有find我正在寻找的东西。

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

我不想运行任何模板或XLST转换它或类似的东西。 我只想简单地返回所述电子表格的底层XML表示。

这似乎应该是一个非常简单的任务,但我不知道如何去做。

我发现的一切都需要使用DataTables并通过行和单元格循环(通过OpenXML )来输出一个更具人性化的特定XML表示,但这不是我想要的。

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

任何帮助将不胜感激。

好,找出来,而不必做任何解压缩文件。

如果您使用SAX方法将工作表加载到在OpenXmlReaderfind的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(); }