Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi xml excel worksheet geschichte... (https://www.delphipraxis.net/129768-xml-excel-worksheet-geschichte.html)

torberry 25. Feb 2009 10:02


xml excel worksheet geschichte...
 
hallo leute!

ich bin neuling hier, und erklär euch mal mein anliegen..

ich habe ein dataset in delphi 7, da sind ne menge daten drin, und jetzt möchte ich das ganze ding nach excel exportieren. Normalerweise würde ich den tip bekommen das ganze über eine VBA Anweisung zu machen und dann könnte ich ja die forumsuche benutzen und wäre schnell fündig :-D aber das ist für mich wohl der letzte ausweg.. wir haben schon einmal so eine VBA geschichte geschrieben und bei der menge an datensätzen und der excel struktur wäre das eine wirklich üble programmierarbeit.. Ich zähle hier in der alten, ausgedienten unit 4600 zeilen source code :shock:

Normalerweise bin ich ja C# Programmierer, Delphi mag ich ja eigentlich gar nicht :D und in C# wüsste ich sofort die Lösung: XML Worksheet!
Man kann ja eine XML Datei erzeugen, die Excel sofort versteht und dementsprechend die Zellen aus der XML Datei füllt.. Man braucht normalerweise nicht viel, nur einen XML-Writer, damit man die Struktur im richtigen Format aufbauen kann. Wie das Format aussehen sollte kann man ja ganz einfach herrausfinden indem man Excel aufmacht und per "Speichern unter" das Ding als XML-Worksheet speichert.

Schaut euch mal diesen Link an dann wisst ihr wodrauf ich hinaus will.. Auch wenn ich hier im Delphi Forum bin, und vielleicht der ein oder andere noch nie C# Syntax gesehen hat, normalerweise müsste man mit ein wenig Programmierkenntnissen dieses Snippet schon verstehen

http://dotnet-snippets.de/dns/c-exce...eb-SID632.aspx

Die Foreach Schleife in der Mitte geht das ganze Dataset durch (jede Zeile, jede Spalte) und schreibt die Daten als Datensatz in eine XML.. Wenn man die erzeugte Datei doppelklickt öffnet sich sofort Excel, auch wenn man als Standard-XML-Editor was anderes benutzt.. Man braucht zum erzeugen nicht mal Excel installiert zu haben, aber öffnen kann man die Datei glaub ich erst ab Office Version 2003..

Na auf jeden Fall möchte ich sowas auch in Delphi haben, das Snippet da oben ist nicht so hard-gecoded, in der Praxis kann man die Procedure (in C# würde ich vielleicht Methode sagen) überall hinkopieren und jedes Dataset exportieren, egal was für eine Struktur dahinter steckt.. So ein Snippet in Delphi wäre ja auch sehr hilfreich, ich denke dass die Com-Schnittstelle langsam ausgedient hat.
OK soviel zu meinem Problem, jetzt stell ich mal meine Fragen:

1. Hat jemand schon so ein Snippet (okok ich mach mir ja auch selber die arbeit das zu coden aber ein versucht ists ja wert diese frage zu stellen^^)
2. Hat jemand ein link für ein gescheites Tutorial oder ne kleine Hilfe oder ne info wie ich mit Delphi eine XML-Datei erzeuge? bzw
3. Welche Komponente benutz ich in Delphi? Ein kleines Stichwort für Google wäre auch schon hilfreich! Muss ja die Attribute und Elemente alle zu Fuß angeben da hab ich noch keine passende Komponente hier in meiner Umgebung gefunden.
4. Ist es überhaupt möglich mit Delphi 7 sowas zu coden?

Das ist auch "schon" alles, sorry für die doofen fragen aber bin auch ein kleiner delphi laie^^
Hab schon ne menge bei google gesucht und es floss auch schon eine riesige menge kaffee in der zwischenzeit, aber bin da noch nicht schlau geworden... Hab auch die Forumsuche benutzt, doch nix hilfreiches für diese thematik gefunden.. Ein Anfang wäre schön, den Rest krieg ich iwie schon hin..

:wiejetzt:

Yheeky 25. Feb 2009 13:15

Re: xml excel worksheet geschichte...
 
Hi Torberry,

also ich programmiere auf der Arbeit auch in C# auf .NET 3.5. Ist ne sehr feine Sache, gerade die ganzen neuen Spielereien wie LINQ etc...ABER: mit Delphi kann man im Grunde genauso viel machen wie mit C#. Also geht auch das was du hier suchst ;)

Das könnte was für dich sein. Ansonsten hatte ich auch schonmal überlegt sowas zu entwickeln, aber da ich genau das, was du gerade vor hast, gerade in C# geschrieben habe (DataSet mit Daten gefüllt und dann Excel-Datei mit Formatierungen geschrieben etc.), aber es ist schon sehr zeitaufwändig. Zudem musst du überlegen, dass eine Excel-XML-Datei diverse Dinge einfach nicht anzeigen kann (z.B. Charts).

So und nun konkret zu deinen Fragen:
1.) Schau mal hier: http://www.tmssoftware.com/site/flexcelnet.asp
2.) Nein, aber im Grunde geht das genauso wie in C#. Gibt zahlreiche XML-Komponenten, die automatisch eine XML genormte Struktur erstellen (z.B. JVSimpleXML).
3.) siehe 2.) ;)
4.) Auch schon gesagt: Definitiv JA! :)

Viel Erfolg!

torberry 25. Feb 2009 14:00

Re: xml excel worksheet geschichte...
 
Dank dir für den Link yheeky, dieses Flexcel ist weltklasse, aber problem ist dass das Ding nicht gratis ist, kommt also für unsere Verhältnisse hier nicht in Frage. Da würde ich eher das Geld sparen und das ganze zu Fuß programmieren, zu Fuß weiß man immer wo es klemmt wenn das Programm abschmiert :wink:
Also kommen externe Libs wohl eher weniger in Frage.. Die Sache mit dem Charts ist halb so wild, da kann man ja später immer noch ein VBA Macro drauf bauen, Hauptsache die Daten kommen erstmal in die xls ohne tausend zeilen code..^^
Ich habe jetzt angefangen mit dem TXMLDocument die Excel-Datei nachzubauen, später bau ich da dann die Schleife ein für die Zeilen/Spalten im Dataset. Aber ich hänge hier einfach noch an solchen Kleinigkeiten fest z.B.

<rootElement> <= mit AddChild() einfügen oder?
<Element1> <= mit DocumentElement.AddChild('Element1', 0)aber wohin dann mit den attributen
<Element2></Element2> <= wie füge ich dieses element ein?
</Element1>
</rootElement>

oder die Frage, wie spreche ich ein bestimmtes Element an um ein Attribut reinzuschreiben oder auch Daten, und wie trage ich Daten in ein Element ein?!^^

Ich hab wirklich schon ne Menge gegoogled aber kein Delphi-Laien-freundliches Tutorial gefunden..

Total doofe Fragen aber zum Glück gibt es nur doofe Antworten.. In C# ist das ganze viel einfacher :-D
Noch ne andere Frage, vielleicht weiß ja jemand Bescheid, diese XML-Spreadsheet Geschichten funktionieren wohl nicht in Open Office oder? Das benutzen auch einige Kunden von uns aber denen ist dann wohl einfach nicht zu helfen wenn das nicht geht :P


greetz

Yheeky 25. Feb 2009 16:06

Re: xml excel worksheet geschichte...
 
Okay, kein Geld ausgeben zu wollen, heisst ja noch lange nicht, dass man auf externe Libs verzichten muss ;-)
Die JEDI VCLs sind kostenlos und super, gerade im XML-Bereich kann man damit alles machen. Damit bekommst du am leichtesten das hin, was du möchtest. Deine Zeilen, habe ich z.B. mit diesen paar Zeilen Code hinbekommen (das sind wahrlich keine 1000) *g*:

Delphi-Quellcode:
var tempElement : TJvSimpleXMLElem;
begin
  JvSimpleXML1.Root.Name := 'rootElement';
  tempElement := JvSimpleXML1.Root.Items.Add('Element1');
  tempElement.Items.Add('Element2', 'Test');
  Memo1.Text := JVSimpleXML1.XMLData;
end;
Daraus wird (sogar mit automatisch erstelltem Prolog):
XML-Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<rootElement>
  <Element1>
    <Element2>Test</Element2>
  </Element1>
</rootElement>


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz