XML Daten in Excel ausgeben mit Hilfe von Java

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • XML Daten in Excel ausgeben mit Hilfe von Java

    Hallo Leute,

    ich habe folgendes Porblem und würde mich freuen jemand könnte mir helfen
    ich arbeite mit Eclipse und dem XPath Explorer

    ich habe folgende XML Datei
    Ziel ist es "4711", "test" und "0815" in die erste Zelle einer Excel Datei zu schreiben

    Quellcode

    1. <belegungsliste>
    2. <geraetedaten>
    3. <id>4711</id>
    4. <visible_id>test</visible_id>
    5. <seriennummer>0815</seriennummer>
    6. </geraetedaten>
    7. </belegungsliste>



    Wenn wir das erstellen der Excel File und das erzeugen der Zelle weglassen sieht mein Code wie folgt aus:

    Einlesen der XML File und erstellen von dem XPAthAPI:

    Quellcode

    1. File xmlFile = new File("belegungsliste.xml");
    2. builder = factory.newDocumentBuilder();
    3. doc = builder.parse(xmlFile.getAbsolutePath());
    4. root = (Element) doc.getDocumentElement();
    5. nl = XPathAPI.selectNodeList(root, "/belegungsliste/geraetedaten");



    und jetzt das Schreiben in die Excel File was bei mir nicht funktionieren will:

    Quellcode

    1. c.setCellValue("Geraetedaten:\n" + "ID: "
    2. + nl.item(?).getChildNodes().item(?).getNodeValue() + "\nVisible_id: "
    3. + nl.item(?).getChildNodes().item(?).getNodeValue() + "\nSeriennummer: "
    4. + nl.item(?).getChildNodes().item(?).getNodeValue());


    egal was ich für die Fragzeichen einstetze ich erhalte in der Excel File immer nur NULL oder einen Zeilenumbruch.
    Sind das zu viele oder zu wenige Verschachtelungen? oder wo genau liegt das Problem..

    Danke schon mal im Vorraus

    MFG Alex
  • Hmm danke, aber leider hab ich das so schon selber probiert
    Wenn ich deinem Vorschlag noch eine Zeile hinzufüge nähmlich das if

    Quellcode

    1. for (int i = 0; i < nl.getLength(); i++)
    2. {
    3. NodeList tmp = nl.item(i).getChildNodes();
    4. for (int j = 0; j < tmp.getLength(); j++)
    5. {
    6. if (tmp.item(j).getNodeType() == 1)
    7. System.out.println(i + "," + j + ": " + tmp.item(j).getNodeValue());
    8. }
    9. }


    dann komm ich wieder auf folgendes Ergebniss in der Konsole:

    0,1: null
    0,3: null
    0,5: null


    also wieder nur NULL

    vll. stimmt ja meine Zuweisung von nl nicht???

    Quellcode

    1. nl = XPathAPI.selectNodeList(root, "/belegungsliste/geraetedaten");


    bei meiner Zuweisung erhalte ich im XPath Explorer diesen String Value für nl:

    \n 4711\n test\n 0815\n
  • AH klasse ich habs deine Hilfe mit der Schleife und der Ausgabe in der Konsole war klasse danke

    Quellcode

    1. c.setCellValue("Geraetedaten:\n" + "ID: "
    2. + nl.item(0).getChildNodes().item(0).getNodeValue() + "\nVisible_id: "
    3. + nl.item(1).getChildNodes().item(0).getNodeValue() + "\nSeriennummer: "
    4. + nl.item(2).getChildNodes().item(0).getNodeValue());


    ist die richtige Lösung, jedoch war die Zuweisung von von nl falsch...hier die richtige Zuweisung

    Quellcode

    1. nl = XPathAPI.selectNodeList(root, "/belegungsliste/geraetedaten/*");
  • Ok ich schreibe ein bisschen was zum Quelltext drumherum, habe dir mal nen vereinfachten Code gepostet der nur zeigt wie man das mit dem erstellen und befüllen macht
    Natürlich mit Kommentaren

    Quellcode

    1. import java.io.FileOutputStream;
    2. import java.io.IOException;
    3. import org.apache.poi.hssf.usermodel.HSSFCell;
    4. import org.apache.poi.hssf.usermodel.HSSFRow;
    5. import org.apache.poi.hssf.usermodel.HSSFSheet;
    6. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    7. public class ExelErstellen
    8. {
    9. public static void main(String[] args) throws IOException
    10. {
    11. short rownum; // zwei short Variablen für die Zell- und Spaltennummer + einen FileOutputStream
    12. short cellnum;
    13. FileOutputStream out = null;
    14. try
    15. {
    16. out = new FileOutputStream("test.xls"); // Damit erstellst du die Excel File, in dem Fall direkt im Workspace
    17. HSSFWorkbook wb = new HSSFWorkbook(); // Damit erstellst du das Workboo
    18. HSSFSheet s = wb.createSheet(); // und hier eine Tabelle
    19. wb.setSheetName(0, "Hallo"); // Name der Tabelle
    20. HSSFRow r = null; // Hier definierst du zwei Variablen sozusagen als die Zelle und Spalte dieser Excel File
    21. HSSFCell c = null;
    22. rownum = (short) 0; //
    23. r = s.createRow(rownum); // Hiermit wählen wir dann Spalte aus, in dem Fall die 0te
    24. cellnum = (short) 0;
    25. c = r.createCell(cellnum); // Hiermit wählen wir dann Zelle aus, in dem Fall auch die 0te
    26. // Im Prinzip haben wir mit den beiden Befehlen jetzt die Zelle ganz oben Links ausgewählt
    27. c.setCellValue("Test"); //und hier befühlst du dann die Zelle mit dem Wer denn du möchtest
    28. wb.write(out); // Damit schreibst du das ganze auch wirklich in die Datei
    29. }
    30. finally
    31. {
    32. if (out != null) // Wenn das erstellen der Datei dann funktioniert hat wird die dann auch geschlossen
    33. out.close();
    34. }
    35. }
    36. }
    Alles anzeigen


    Hoffe konnte damit ein bisschen helfen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von blackmore ()