我已经查看了这个论坛上关于类似问题的大多数主题,但没有找到我正在寻找的内容.
我正在尝试使用C#编写BizTalk 2013 R2的管道组件,只是将传入的Excel 2010 .xlsx文件转换为它的裸/基XML表示.
我不想对它运行任何模板或XLST转换它或类似的东西.我只是想按原样返回所述电子表格的基础XML表示.
看起来这应该是一项非常简单的任务,但我根本无法弄清楚如何去做.
我发现的一切都需要使用DataTables并循环遍历行和单元格(通过OpenXML)来输出一个更具人类可读性的特定XML表示,但这不是我想要的.
我想要该电子表格的实际Microsoft XML表示.
任何帮助将不胜感激.
最佳答案 好的,想出来就不用解压缩文件了.
如果您使用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();
}