Announcement

Collapse
No announcement yet.

Vielzahl von XML Dateien zu XLS oder CSV

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Vielzahl von XML Dateien zu XLS oder CSV

    Hallo alle zusammen,
    ich habe in einer Datenbank viele XML Strings gespeichert.

    Beispiel:

    <xml>
    <bundesland>Hessen</bundesland>
    <stadt>Frankfurt</stadt>
    <einwohner>
    <maennlich>192831</maennlich>
    <weiblich>232313</weiblich>
    </einwohner>
    </xml>

    <xml>
    <bundesland>Hessen</bundesland>
    <stadt>Giessen</stadt>
    <einwohner>
    <maennlich>571223</maennlich>
    <weiblich>124243</weiblich>
    </einwohner>
    </xml>
    <xml>
    <bundesland>Hessen</bundesland>
    <stadt>Fulda</stadt>
    <einwohner>
    <maennlich>12331</maennlich>
    <weiblich>323313</weiblich>
    </einwohner>
    </xml>

    usw...

    Nun möchte ich diese vielen XML Dokumente als Excel aufbereiten.
    Selektiere ich auf meiner ASP.NET Anwendung z.B. als Bundesland "Hessen" und klicke auf "M/W Auswertung" sollte er eine Datei als Download liefern die die oben gennanten XML Daten wie folgt aufbereitet:

    Bundesland; Stadt; Einwohner; Männer; Frauen
    Hessen; Frankfurt; =SUM(M1+F1); 192831; 232313
    Hessen; Giessen; =SUM(M2+F2); 571223; 124243
    Hessen; Fulda; =SUM(M3+F3); 12331; 323313
    ...
    Hessen; Gesamt:; =SUM(SpalteX); =SUM(SpalteY); =SUM(SpalteZ);

    Wie bekomme ich sowas einfach und schnell realisiert?

    Server: Microsoft SQL Server 2008
    Entw. Umgebung: Visual Studio 2008
    Sprache: ASP.NET / VB.NET

    Liebe Grüße,

    Jessica

  • #2
    Hallo Jessica,

    das mit einfachste wäre, die XMLx direkt selbst zu selektieren; das Ergebnis in CSV zu bringen, dürfte doch ein einfaches sein.

    [highlight=sql]SET NOCOUNT ON
    CREATE TABLE #xml
    (Part xml);

    INSERT INTO #xml VALUES
    ('<xml><bundesland>Hessen</bundesland><stadt>Frankfurt</stadt>
    <einwohner><maennlich>192831</maennlich><weiblich>232313</weiblich>
    </einwohner></xml>');

    INSERT INTO #xml VALUES
    ('<xml><bundesland>Hessen</bundesland><stadt>Giessen</stadt>
    <einwohner><maennlich>571223</maennlich><weiblich>124243</weiblich>
    </einwohner></xml>');
    GO

    SELECT part.value('(/xml/bundesland)[1]', 'varchar(40)') AS Bundesland,
    part.value('(/xml/stadt)[1]', 'varchar(40)') AS Stadt,
    part.value('(/xml/einwohner/maennlich)[1]', 'int')
    + part.value('(/xml/einwohner/weiblich)[1]', 'int') AS Einwohner,
    part.value('(/xml/einwohner/maennlich)[1]', 'int') AS Maennlich,
    part.value('(/xml/einwohner/weiblich)[1]', 'int') AS Weiblich
    FROM #xml AS X

    GO
    DROP TABLE #xml[/highlight]

    Ergebnis:
    [highlight=code]Bundesland Stadt Einwohner Maennlich Weiblich
    -------------------- -------------------- ----------- ----------- -----------
    Hessen Frankfurt 425144 192831 232313
    Hessen Giessen 695466 571223 124243[/highlight]
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Zwei Fragen zu deinem Vorschlag:

      1. Die Aufsummierung fehlt, wie würde die laufen?
      2. Wie bekomme ich diese Ergebnis-Sicht in eine CSV?

      LG;
      Jessi

      Comment


      • #4
        Hallo Jessica,

        Du hast eine ASP.NET Appliaktion, die wohl auch schon einen Datenbank-Zugriff durchführt.
        Du hast mit dem Script nun auch die Möglichkeit, die XML direkt zu selektieren; musst sie also nicht noch extra einzeln als XML laden und die Daten extrahieren.

        Das DataSet in CSV String zu formatieren und dann noch Zwischensummen einzufügen, solltest Du hinbekommen können; wenn nicht, frag mal im .NET / ASP.NET Forum nach.
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment

        Working...
        X