Экспорт из xml в xlsx - C#
Формулировка задачи:
Проблема в том, что при добавлении тега <ActualData> на 4 уровень данные в xlsx файл не выгржуаются. XML файл:
при выгрузке в xlsx файл просто записывается "Programs_Id 0". Если убрать тег с четвертого уровня то данные выгружаются полностью. Есть предположения из за чего это проиходит? Заранее спасибо.
<ActualData>
<Programs>
<Program>
<BeginYear>2014</BeginYear>
<Code>15</Code>>
<Name>Показатель</Name>
</Program>
</Programs>
</ActualData>
Решение задачи: «Экспорт из xml в xlsx»
textual
Листинг программы
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Threading;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;
using System.Data;
//...
private static void Converts()
{
DataSet ds = new DataSet();
//Convert the XML into Dataset
ds.ReadXml("C:\\dir\\ex2.xml");
DataTable dt = new DataTable();
//Retrieve the table fron Dataset
dt = ds.Tables[0];
// Create an Excel object
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
//Create workbook object
string str = "C:\\dir\\test3.xlsx";
Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Open(Filename: str);
//excel.
//Create worksheet object
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.ActiveSheet;
//worksheet= workbook.Worksheets.get_Item(3);
// Column Headings
int iColumn = 0;
foreach (DataColumn c in dt.Columns)
{
iColumn++;
excel.Cells[1, iColumn] = c.ColumnName;
}
// Row Data
int iRow = worksheet.UsedRange.Rows.Count - 1;
foreach (DataRow dr in dt.Rows)
{
iRow++;
// Row's Cell Data
iColumn = 0;
foreach (DataColumn c in dt.Columns)
{
iColumn++;
excel.Cells[iRow + 1, iColumn] = dr[c.ColumnName];
}
}
((Microsoft.Office.Interop.Excel._Worksheet)worksheet).Activate();
//Save the workbook
workbook.Save();
//Close the Workbook
workbook.Close();
Console.Out.WriteLine("close");
// Finally Quit the Application
((Microsoft.Office.Interop.Excel._Application)excel).Quit();
}