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