使用 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() 阅读元素; 但无法在数据集中存储特定元素。

使用 C# 将 XML 数据导出到 Excel

对我来说,问题不在于您无法将 XML 数据导出到 Excel 中。

问题实际上是您无法将XML(基于树的分层格式(转换为准备导出到Excel的2D值数组。

我的意思是,如果您的 XML 包含三个级别的层次结构,您希望 Excel 如何显示此层次结构?!

无论如何,让我回答你问题的第二部分。

如果可以以常规的二维格式获取数据,无论是作为DataSet还是DataTable,那么您可以使用我的免费 C# 类使用一行代码将其写入.xlsx文件。

导出到Excel。

现在,您只需要将数据转换为可用格式即可。

交给你了...!