fpspreadsheet - Kleinere Fragen

Rund um die LCL und andere Komponenten
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6199
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: fpspreadsheet - Kleinere Fragen

Beitrag von af0815 »

wp_xyz hat geschrieben:...alles in allem: viele dumme Fehler...

Ich finde alle :-)

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6199
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: fpspreadsheet - Kleinere Fragen

Beitrag von af0815 »

Ich weis - Drucken/PDF - ist in fpSpreadSheet nicht vorgesehen. Gibt/gab es dazu vielleicht schon Ansätze ?

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: fpspreadsheet - Kleinere Fragen

Beitrag von wp_xyz »

Ich habe zur Zeit nicht vor, in diese Richtung etwas zu machen. Es gibt ja schon lrOfficeImport, ein Zusatzpackage zu LazReport (was bei dir natürlich wenig hilfreich ist, weil du ja eine alternative Report-Engine schreiben willst und für diese dann plötzlich LazReport benötigst...).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6199
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: fpspreadsheet - Kleinere Fragen

Beitrag von af0815 »

wp_xyz hat geschrieben:lrOfficeImport

Ein gutes Stichwort :-) Danke nochmals

Es ist grundlegend kein Problem Lazreport zu verwenden. Es ist eher so, das mit Excel die meisten Qualitöter sowieso umgehen können.

Damit können die auch ihre Reports auch gestalten, wenn die dann wissen, welches Keywort durch was im Report ersetzt wird :-) Es ist eher ein Problem, die auf einen Reportdesigner umzustellen, da gibt es Widerstand. So können die aber ihre Reports langsam auf Automatismen umstellen, das funktioniert. Vor allen wenn da ihre Daten ausgefüllt werden und die trotzdem die Statistik, hmmm sagen wir mal .... adaptieren können.

Ich habe da schon zuviel gesehen, als das ich das irgendeiner Zahl oder Diagramm was glauben könnte. Den Satz 'Traue keiner Statistik, die du nicht selbst gefälscht hast' kann ich zu 100% nachvollziehen.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6199
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: fpspreadsheet - Kleinere Fragen

Beitrag von af0815 »

Noch eine 'kleinere Frage' :-)

Ich habe hier ein Spreadsheet in dem ein Diagramm eingebettet ist. Beim Laden und speichern mit Spready (als Test) geht das Diagramm verloren.

Ist es möglich mit fpspreadsheet das Diagramm zu erhalten (keine Anzeige etc.), so das man ein Spreadsheet laden kann, ein paar Zellen ändern kann und das ganze wieder wegspeichern kann, ohne das das Diagramm extrahiert wird.

Andreas

BTW: Das wurde bereits wechselweise mit Excel und L:ibreoffice bearbeitet :;-)
Dateianhänge
Beispiel.zip
Beispiel für Diagramm
(3.98 KiB) 52-mal heruntergeladen
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: fpspreadsheet - Kleinere Fragen

Beitrag von wp_xyz »

Tut mir leid, Diagramme werden nicht unterstützt.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6199
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: fpspreadsheet - Kleinere Fragen

Beitrag von af0815 »

wp_xyz hat geschrieben:Tut mir leid, Diagramme werden nicht unterstützt.


Ist es möglich den Chart Stream selbst im Worksheet zu speichern und beim schreiben wieder hinzuzufügen. (z.B. xlsbiff8 )

Lt. den spezifikationen gibt es ja 2 Arten
a) Ein Chartsheet -> das kann man wie ein Worksheet dedektieren -> Man sieht im BOF die Kennung für ein Sheet (INT_BOF_CHART)
b) In ein Worksheet embedded Chart. Hat die Kennung: INT_EXCEL_ID_CHART = $1002; (noch nicht vorhanden)

für mich stellt sich die Frage, wie kann ich einen solchen Bereich zB. von BOF bis EOF einfach zwischenbuffern. Wenn das Eingabeformat und das Ausgabeformat gleich sind, so könnte man ja diese Informationen wieder in die Datei zurückschreiben. Ähnlich wie mit den Druckerinformationen. Es muss ja nicht die ganze Struktur dekodiert werden, das macht ja auch keinen Sinn.

Der Weg ist mir noch etwas unklar.
In TsSpreadBIFF8Reader.ReadFromStream wird InternalReadFromStream aufgerufen, dort wird einfach TsSpreadBIFF8Reader.ReadWorksheet (des Readers) aufgerufen. Dabei wird aber der BOF nicht ausgewertet und genaugenommen alles was kommt in das aktuelle Sheet eingefügt. Es wird keine Unterscheidung durch die BOF gemacht, obwohl verschiedene Typen zulässig sind.
Siehe auch http://www.openoffice.org/sc/excelfileformat.pdf Kapitel 5.8.1
Excel File Format BIFF BOF
Excel File Format BIFF BOF


Hier sieht man, das auch das Chart vorkommt. Wenn ich mich mit dem Debugger reinhänge, in das ReadWorksheet, so kann ich es sehen, das die BOF information kommt. Auch kann ich INT_EXCEL_ID_CHART als Recordtype aufspüren. Nur bräuchte ich einen Hinweis, wie ich den Bereich eingrenzen kann, das ist mir noch nicht klar.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: fpspreadsheet - Kleinere Fragen

Beitrag von wp_xyz »

af0815 hat geschrieben:Lt. den spezifikationen gibt es ja 2 Arten
a) Ein Chartsheet -> das kann man wie ein Worksheet dedektieren -> Man sieht im BOF die Kennung für ein Sheet (INT_BOF_CHART)
b) In ein Worksheet embedded Chart. Hat die Kennung: INT_EXCEL_ID_CHART = $1002; (noch nicht vorhanden)

Beide stehen in einem eigenen Stream, der eigentlich von InternalReadFromStream erkannt werden müsste, denn im BIFF-Explorer sehe ich den Chart-Stream auch. Beim eingebetteten Chart gibt es noch einen (oder mehrere) Records im Stream des zugehörigen Sheet, insbesondere den hässlichen MSODRAWING, mit dem ich auf Kriegsfuß stehe...

af0815 hat geschrieben:für mich stellt sich die Frage, wie kann ich einen solchen Bereich zB. von BOF bis EOF einfach zwischenbuffern.

Indem du dir die Streampositionen von BOF und EOF merkst und dann nach dem Erreichen von EOF den Bereich dazwischen herauskopierst.

af0815 hat geschrieben:Wenn das Eingabeformat und das Ausgabeformat gleich sind...

Das kann nicht sein. Wenn die Datei unverändert bliebe, warum machst du dann den ganzen Aufwand? Du wirst im Gegenteil irgendetwas verändern, und musst dann hoffen, dass es nicht den Chart und damit wahrscheinlich die Datei zerstört.

Das Verfahren kann nur funktionieren in ganz speziellen Fällen, wo nur feststehende Zellinhalte verändert werden. Aber schon eine Series um einen Datenpunkt zu verlängern, bedeutet, dass man den Chart-Stream versteht (was bei mir nicht der Fall ist) - der Chart-Stream enthält mehr Records als ein Sheet-Stream!

Mehr Erfolg hat man wahrscheinlich mit dem xlsx-Format, weil man da alles im Klartext sieht. Einfach die Dateiendung auf .zip umbenennen, auspacken und die xml-Dateien öffnen. Editieren und wieder zu einem zip zusammenschnüren. Dasselbe Verfahren funktioniert auch bei .ods.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6199
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: fpspreadsheet - Kleinere Fragen

Beitrag von af0815 »

wp_xyz hat geschrieben:Das Verfahren kann nur funktionieren in ganz speziellen Fällen, wo nur feststehende Zellinhalte verändert werden. Aber schon eine Series um einen Datenpunkt zu verlängern, bedeutet, dass man den Chart-Stream versteht (was bei mir nicht der Fall ist) - der Chart-Stream enthält mehr Records als ein Sheet-Stream!

Wie schon beschrieben, geht es mir nicht um eine Änderung am Chart, dieses soll nur beim einlesen nach nachherigen wieder schreiben erhalten bleiben - so wie es ist. Keine Auswertung, Interpretation oder Änderung am Chart. Ganz einfach den Chart-Stream ablegen.

Danke für die guten Tips, auf den BIFF Explorer habe ich glatt vergessen. Und mit EOF und BOF ist es auch so wie mit dem Wald und den Bäumen - manchmal denkt man zu kompliziert wenn man im Code steckt.

Danke für den gedanklichen Anstoß

Andreas

Edit: Danke, mit dem Biffexplorer sieht man erst wirklich, wo man da herumgräbt (und was du gemeint hast).
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten