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

使用C#和BizTalk将Excel(xlsx)转换为XML,c#,xml,excel,biztalk,biztalk-2013r2,C#,Xml,Excel,Biztalk,Biztalk 2013r2,我已经看了这个论坛上关于类似问题的大部分主题,但还没有找到我想要的 我正在尝试使用C为BizTalk 2013 R2编写一个管道组件,以便将传入的Excel 2010.xlsx文件转换为其裸/基本XML表示形式 我不想对其运行任何模板,也不想对其进行XLST转换或诸如此类的操作。我只想按原样返回所述电子表格的底层XML表示 看起来这应该是一项非常简单的任务,但我根本不知道怎么做 我所发现的一切都需要使用数据表,并通过行和单元格循环(通过OpenXML),以输出更易于人类阅读的特定XML表示,但这

我已经看了这个论坛上关于类似问题的大部分主题,但还没有找到我想要的

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

我不想对其运行任何模板,也不想对其进行XLST转换或诸如此类的操作。我只想按原样返回所述电子表格的底层XML表示

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

我所发现的一切都需要使用
数据表
,并通过行和单元格循环(通过
OpenXML
),以输出更易于人类阅读的特定XML表示,但这不是我想要的

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


任何帮助都将不胜感激。

好的,无需对文件进行任何解压缩即可解决

如果使用SAX方法将工作表加载到
OpenXmlReader
中,请参见:

然后,您可以使用读取器获取
OuterXml
,如下所示:

使用(SpreadsheetDocument SpreadsheetDocument=SpreadsheetDocument.Open(文件路径,false))
{
WorkbookPart wbPart=电子表格文档.WorkbookPart;
OpenXmlReader=OpenXmlReader.Create(wbPart);
while(reader.Read())
{
if(reader.ElementType==类型(页))
{
Sheet Sheet=(Sheet)reader.LoadCurrentElement();
工作表部件wsPart=(工作表部件)(wbPart.GetPartById(sheet.Id));
OpenXmlReader wsReader=OpenXmlReader.Create(wsPart);
while(wsReader.Read())
{
if(wsReader.ElementType==typeof(工作表))
{
工作表wsPartXml=(工作表)wsReader.LoadCurrentElement();
Console.WriteLine(wsPartXml.OuterXml+“\n”);
}
}
}
}
Console.ReadKey();
}

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