XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<IMPORT ExportDate="2016-03-02" Exercise="1" User="asa" Version="8.73" BusinessUnit="abc(1236)">
<BusinessUnitAdmin>
...
...
</BusinessUnitAdmin>
<BusinessUnit>
..
..
</BusinessUnit>
<Exercise>
..
..
</Exercise>
<Exercise>
..
..
</Exercise>
<Contact>
..
</Contact>
</IMPORT>
我正在尝试将此XML导出到Excel,同时还要维护XML的架构。
为此,我尝试将XML转换为Dataset,然后将其导出到Excel。
如果我从XML中删除根元素 - IMPORT,它可以正常工作。但是,由于它具有&lt; BusinessUnit 作为属性,因此无法读取&#34; BusinessUnit&#34;作为元素。
为此,我试图从第二个元素- <BusinessUnitAdmin>
读取XML;但无法做到。
C#代码:
DataSet ds = new DataSet();
string path = "C:\\abc\\xyz.xml";
ds.ReadXml(path); //throws error
ExportDataSetToExcel(ds);
错误:&#34;名为&#39; BusinessUnit&#39;已经属于此DataTable:无法将嵌套表名设置为相同的名称。&#34;
我尝试过使用LINQ:
XDocument xdoc = XDocument.Load(path);
XElement import = xdoc.Element("IMPORT");
XElement contact = import.Element("Contact");
StringReader theReader = new StringReader(contact.ToString());
ds.ReadXml(theReader);
它工作正常,但这样,我必须手动读取所有元素。
我也尝试使用 - var allElements = xdoc.Descendants()
阅读元素;
但无法在数据集中存储特定元素。
答案 0 :(得分:0)
对我来说,问题不是,您无法将XML数据导出到Excel中。
问题实际上是您无法将XML(基于树的分层格式)转换为2D数组值,可以导出到Excel。
我的意思是,如果您的XML包含三个层次结构,您希望Excel如何显示它?!
无论如何,让我回答你问题的第二个部分。
如果您可以使用常规二维格式(DataTable
或sort by type
)获取数据,那么您可以使用我的免费C#类将其写入.xlsx文件代码行。
现在,您只需要将数据转换为可用的格式。
告诉你......!