AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi xml excel worksheet geschichte...
Thema durchsuchen
Ansicht
Themen-Optionen

xml excel worksheet geschichte...

Offene Frage von "torberry"
Ein Thema von torberry · begonnen am 25. Feb 2009 · letzter Beitrag vom 25. Feb 2009
Antwort Antwort
torberry

Registriert seit: 25. Feb 2009
2 Beiträge
 
#1

xml excel worksheet geschichte...

  Alt 25. Feb 2009, 10:02
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 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

Normalerweise bin ich ja C# Programmierer, Delphi mag ich ja eigentlich gar nicht 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..

Ein kluger Mann widerspricht seiner Frau nicht, er wartet bis Sie es selber tut...
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#2

Re: xml excel worksheet geschichte...

  Alt 25. Feb 2009, 13:15
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!
  Mit Zitat antworten Zitat
torberry

Registriert seit: 25. Feb 2009
2 Beiträge
 
#3

Re: xml excel worksheet geschichte...

  Alt 25. Feb 2009, 14:00
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
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
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


greetz
Ein kluger Mann widerspricht seiner Frau nicht, er wartet bis Sie es selber tut...
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#4

Re: xml excel worksheet geschichte...

  Alt 25. Feb 2009, 16:06
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>
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz