Witam.
Mam plik XML w poniższym formacie, który otrzymuję od sprzedawcy.
Jak widać dokument ma nagłówek i pozycje.
W przypadku importu manualnego pliku do excela - importują mi się wszystkie pozycje uzupełnione w pierwszych kilku kolumnach o dane nagłówkowe (oczywiście powtórzone dla każdej pozycji). za pomocą poniższego kodu:
private void button1_Click(object sender, EventArgs e)
{
try
{
XmlReader xmlFile ;
xmlFile = XmlReader.Create("faktura.xml", new XmlReaderSettings());
DataSet ds = new DataSet();
ds.ReadXml(xmlFile);
dataGridView1.DataSource = ds.Tables[0];
}
catch (Exception ex)
{
MessageBox.Show (ex.ToString());
}
}
W przypadku użycia zapisu do excela - z poziomu C# jest analogicznie - tylko jeden rekord z nagłówka.
Kod, którego użyłem:
private void button1_Click(object sender, EventArgs e)
{
Excel.Application xlApp ;
Excel.Workbook xlWorkBook ;
Excel.Worksheet xlWorkSheet ;
object misValue = System.Reflection.Missing.Value;
DataSet ds = new DataSet();
XmlReader xmlFile ;
int i = 0;
int j = 0;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xmlFile = XmlReader.Create("faktura.xml", new XmlReaderSettings());
ds.ReadXml(xmlFile);
for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
for (j = 0; j <= ds.Tables[0].Columns.Count - 1; j++)
{
xlWorkSheet.Cells[i + 1, j + 1] = ds.Tables[0].Rows[i].ItemArray[j].ToString ();
}
}
xlWorkBook.SaveAs("d:\\xml2excel.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlApp);
releaseObject(xlWorkBook);
releaseObject(xlWorkSheet);
MessageBox.Show("Done .. ");
}
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
}
finally
{
GC.Collect();
}
}
W jaki sposob mogę odczytać plik tak aby wynikowo w excelu znalazly sie wszystkie informacje (pozycje) wraz z informacja o fakturze, sprzedawcy itp.
Dziekuję
**
PLIK XML:**
<DocumentElement>
<nag>
<sprzedawca_naz>Jakas firma</sprzedawca_naz>
<sprzedawca_nip>123-456-78-90</sprzedawca_nip>
<sprzedawca_adr>Jakis adres</sprzedawca_adr>
</nag>
<poz>
<lp>1</lp>
<tow_kod>9D7F915</tow_kod>
<indeks>D4-468</indeks>
<nazwa>nazwa czesci pierwszej</nazwa>
<ilosc>2</ilosc>
<cena>21.83</cena>
<cenadet>35.18</cenadet>
<vat>23</vat>
<sww>
</sww>
<nr_wz>001319017/G/2017/WZ</nr_wz>
</poz>
<poz>
<lp>2</lp>
<tow_kod>A63A8673</tow_kod>
<indeks>BHN31-7</indeks>
<nazwa>nazwa czesci drugiej</nazwa>
<ilosc>1</ilosc>
<cena>250.21</cena>
<cenadet>384.94</cenadet>
<vat>23</vat>
<sww>
</sww>
<nr_wz>13222976/J/2017/WZ</nr_wz>
</poz>
</DocumentElement>