2016-04-05 4 views
0
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. Он работает правильно, если я удаляю корневой элемент - IMPORT из XML. Однако, поскольку он имеет атрибут «BusinessUnit», это предотвращает чтение «BusinessUnit» в качестве элемента. Для этого я пытаюсь читать XML со второго элемента - <BusinessUnitAdmin>; но не в состоянии сделать.Экспорт данных XML в Excel с использованием C#

C# Код:

DataSet ds = new DataSet(); 
string path = "C:\\abc\\xyz.xml"; 
ds.ReadXml(path);       //throws error 
ExportDataSetToExcel(ds); 

Ошибка: «Столбец с именем„BusinessUnit“уже принадлежит к этому DataTable:. Не может установить вложенное имя таблицы с таким же именем»

Я попытался с помощью 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

Для меня проблема не, что вы не можете экспортировать свои XML-данные в Excel.

Проблема заключается в том, что вы не можете преобразовать свой XML-документ в иерархическом формате на основе дерева в двумерный массив значений, готовый для экспорта в Excel.

Я имею в виду, если бы ваш XML содержал три уровня иерархии, как бы вы ожидали, что Excel отобразит это?!

В любом случае, позвольте мне ответить на второй вопрос.

Если вы можете получить свои данные в обычном двумерном формате, либо как DataSet, либо DataTable, то вы можете использовать мой бесплатный класс C# для записи в файл .xlsx с использованием одной строки кода.

Export to Excel

Теперь, вам просто нужно, чтобы получить данные в удобном формате.

К вам ...!

Смежные вопросы