使用 C# 将 XML 数据导出到 Excel
本文关键字:Excel 数据 XML 使用 | 更新日期: 2024-06-14 09:20:50
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转换为数据集,然后将其导出到Excel。如果我从 XML 中删除根元素 - 导入,它可以正常工作。但是,由于它具有"业务单位"作为属性,因此阻止将"业务单位"读取为元素。为此,我正在尝试从第二个元素- <BusinessUnitAdmin>
读取 XML;但做不到。
C# 代码:
DataSet ds = new DataSet();
string path = "C:''abc''xyz.xml";
ds.ReadXml(path); //throws error
ExportDataSetToExcel(ds);
错误:"名为'业务单位'的列已属于此数据表:无法将嵌套表名称设置为相同的名称。
我尝试过使用 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()
阅读元素; 但无法在数据集中存储特定元素。
对我来说,问题不在于您无法将 XML 数据导出到 Excel 中。
问题实际上是您无法将XML(基于树的分层格式(转换为准备导出到Excel的2D值数组。
我的意思是,如果您的 XML 包含三个级别的层次结构,您希望 Excel 如何显示此层次结构?!
无论如何,让我回答你问题的第二部分。
如果可以以常规的二维格式获取数据,无论是作为DataSet
还是DataTable
,那么您可以使用我的免费 C# 类使用一行代码将其写入.xlsx文件。
导出到Excel。
现在,您只需要将数据转换为可用格式即可。
交给你了...!