.XLS dynamisch erstellen

Rund um die LCL und andere Komponenten
Antworten
starkard
Beiträge: 87
Registriert: Mi 31. Okt 2007, 10:44

.XLS dynamisch erstellen

Beitrag von starkard »

Hallo Leute,

Ich suche nach einer Möglichkeit aus meiner Anwendung heraus möglichst plattformunabhängig .XLS Dateien zu erstellen. Dabei sollte nicht unbedingt OO oder Office gestartet werden. OLE Komponenten scheint es eh nur für Windows zu geben. Habe dazu z.B FPspreadsheet gefunden, was allerdings nicht XLS Dateien einlesen kann. Kennt jemand etwas Brauchbareres für diese Zwecke? Vielen Dank im Vorraus

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Kommt sehr drauf an, was du haben willst.
Für ein einfaches öffnen mit Excel genügt offenbar schon eine HTML-Tabelle.

S.a. http://www.devblog.de/index.php/archives/2005/02/05/25/" onclick="window.open(this.href);return false;

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

Jop man kann einfach eine HTML-Tabelle nehmen aber ich glaube wenn man diese Datei dann mit Excel öffnet kann man diese nicht mehr so leicht bearbeiten weil es dann ja alles im Excel-Format abgespeichert wird oder?

starkard
Beiträge: 87
Registriert: Mi 31. Okt 2007, 10:44

Beitrag von starkard »

Genau das scheint der Punkt zu seien. Danke erstmal für eure Antworten. XLS-Dateien kann FPspreadsheet auch ohne HTML erstellen - Einlesen geht hier auch nicht ohne Weiteres. Ich hatte auch eher an eine Komponente/Klasse gedacht die es für Lazarus geben könnte. Anscheinend gibt es so etwas noch nicht und da ich leider gerade wenig Zeit habe eine selber zu entwickeln, werde ich wohl erstmal damit auskommen müssen (Wäre aber mal ein schönes Projekt). Falls euch noch eine andere Möglichkeit einfällt, lasst es mich bitte wissen.

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Kommt halt drauf an was du willst.
Irgend ein Format schreiben welches Excel einlesen kann ist wohl nicht so schwer.
Alle möglichen Excel Formate .xls, .xlsx, .xlsb.. (intern BIFF, XMLSS, OOXML..) einlesen dürfte sehr aufwändig werden.

piper62
Beiträge: 131
Registriert: Sa 5. Apr 2008, 17:57
OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
CPU-Target: 32Bit/64Bit
Wohnort: Ulm

Beitrag von piper62 »

In die MS-Office Formate direkt zu schreiben ist eine sehr schwierige Angelegenheit. Also ein direktes Erzeugen einer .XLS Datei halte ich für zu aufwändig.

Ich würde da eher über eine .CSV Datei gehen. ASCII mit Trennzeichen. Das lässt sich auch dann in Excel weiter verarbeiten. Ist einfach zu erzeugen und einfach auszulesen.

Wenn es nicht unbedingt Excel sein muss, bietet sich natürlich OpenOffice mit dem ODF-Format an. Wir benutzen das um aus unserem System direkt in solche Dateien Einträge zu schreiben. Das Format ist ja bekannterweise auch standardisiert und ausgezeichnet dokumentiert.
Habe allerdings bislang nur Erfahrungen .ODT Dateien. Diese sind einfach ZIP Archive und lassen sich durch umbenennen in *.ZIP dann auspacken. Das geht mit den Calc Dateien genauso.
Die interessante Datei zur Bearbeitung ist dann die "content.xml", darin stehen die Daten der Datei.
Einfach mal ansehen wie das strukturiert ist, ev. ist der Auswand vertretbar.

Bei den Textverarbeitungsdateien geht das ausgezeichnet.

Gruss,
Tibor

ovidius
Beiträge: 86
Registriert: Mo 11. Sep 2006, 12:54
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bremen

Beitrag von ovidius »

Das ist vielleicht kein nützlicher Hinweis, aber es gibt neben Pascal ja noch eine andere Sprache, die ich sehr mag nämlich Perl. Dafür gibt es wunderbare Module, um Excel zu lesen und zu schreiben.

Du könntest also möglicherweise schauen, wie die Programme aufgebaut sind und davon lernen, oder einfach unter Linux und Mac das sowieso schon vorhandene Perl ansprechen, um die Excel-Dateien zu lesen und schreiben. Unter Windows könntest Du dann direkter vorgehen.

Ist aber nur so eine Idee. Fallt also nicht zu doll über mich her :wink:

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

ovidius hat geschrieben: Ist aber nur so eine Idee. Fallt also nicht zu doll über mich her :wink:
In der Hölle sollst du schmoren... ;-)

Ne, aber ich glaube die können auch nicht zaubern.
Hast du einen Link zu einem Perl XLS Reader der nicht OLE benützt?
Laut Wiki ist die Binärspezifikation erst seit Feb. 2008 frei downloadbar.

Am einfachsten wäre es wohl, Office Open XML zu implementieren.

ovidius
Beiträge: 86
Registriert: Mo 11. Sep 2006, 12:54
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bremen

Beitrag von ovidius »

Ich hatte an Spreadsheet::ParseExcel gedacht.

Was heißt hier genau OLE? Es ist jedenfalls von meinem Mac aus benutzbar und auch unter Linux, baut aber auf einem Modul namen OLE-Storage auf: OLE::Storage

Das wäre jedenfalls eine plattform-übergreifende Lösung, die man sich anschauen könnte.

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Könnte sein, dass es damit geht.
Zuletzt geändert von theo am Mi 25. Jun 2008, 14:57, insgesamt 1-mal geändert.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

OLE gibts nur unter Windows, wenn dein Perl Modul darauf basiert kannst du damit auch nur unter Windows Excel Sheets lesen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

ovidius
Beiträge: 86
Registriert: Mo 11. Sep 2006, 12:54
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bremen

Beitrag von ovidius »

OLE gibts nur unter Windows, wenn dein Perl Modul darauf basiert kannst du damit auch nur unter Windows Excel Sheets lesen.
Also ich habe das Perl-Zeug jedenfalls schon erfolgreich auf Mac OS X und Linux genutzt und laut Review funktioniert es auch unter Solaris.

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

http://www.heise.de/ix/artikel/1998/05/163/" onclick="window.open(this.href);return false;

ovidius
Beiträge: 86
Registriert: Mo 11. Sep 2006, 12:54
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bremen

Beitrag von ovidius »

Danke. Toller Link. Habe das einfach immer verwendet, ohne mir Gedanken darüber zu machen, warum es funktioniert :wink:

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Hier gibt's auch noch was:
http://gd.tuwien.ac.at/opsys/winnt/delp ... 9lw.htm#11" onclick="window.open(this.href);return false;
Soll nativ laufen.

Antworten