fpspreadsheet - Kleinere Fragen

Rund um die LCL und andere Komponenten
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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 »

Ist es korrekt, das man Kommentare (derzeit) nicht visuell bearbeiten kann ?

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 »

Doch, in Spready sind das die gelblichen Notiz-Icons in der oberenToolbar links neben den drei Hyperlink-Erdkugeln. Programmtechnisch ist TsCellCommentAction für die Kommentare zuständig. Im Menü waren die drei Actions aber noch nicht eingetragen. Das habe ich jetzt nachgeholt, genauso für die Hyperlinks (--> Menü "Cell").

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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 lade eine Spreadsheet von einem Template (Format sfExcel8) , mache ein paar Änderungen übers Programm und will dann das ganze wieder unter einen neuen Namen speichern (auch Format sfExcel8).

Nur bekomme ich plötzlich folgende Meldung:
Probleme mit Format
Probleme mit Format


Die erzeugte Datei sieht aber ok (in OOffice) aus.

Frage:
a) Kann es sein, das beim Suchen/Ersetzen die Anzahl der Row/Coloums geändert wird ?
b) Welche Möglichkeiten habe ich, die Meldung zu vermeiden ?

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 »

Dazu müsste ich genauer wissen, was du konkret machst. Bitte ein Mini-Projekt posten, in dem ich das Problem nachvollziehen kann.

Generell unterstützt FPSpreadsheet beliebig viele Spalten, Zeilen und Farben. Wenn das Worksheet aber in einer Datei gespeichert wird, müssen die Einschränkungen des jeweiligen Dateiformats beachtet werden. So kommt es ggfs. zu der genannten Fehlermeldung - wobei das programmintern nur eine Warnung ist, um den Benutzer darauf hinzuweisen, dass möglicherweise etwas falsch gespeichert wurde. Könnte es sein, dass die Datei vorher irgendwie in Libre/OpenOffice war? Hier hat Calc das Problem, dass beim Importieren von Excel-Dateien der volle Range an Spalten und Zeilen angelegt wird.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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:Bitte ein Mini-Projekt posten

Bin gerade dabei das auf das nötigste zusammenzustreichen. Benötigt aber fgl (dh. fpc 3.1.x). Weil es kann sein, das da ein paar grundlegende Fragen mehr gibt :-)

wp_xyz hat geschrieben:Könnte es sein, dass die Datei vorher irgendwie in Libre/OpenOffice war? Hier hat Calc das Problem, dass beim Importieren von Excel-Dateien der volle Range an Spalten und Zeilen angelegt wird.

Die (Vorlage) Datei ist ganz sicher in LibreOffice als xlsx erstellt worden. Beim Laden gibt es keine Probleme, nur beim speichern.

Wie komme ich von der Workbooksource zum richtigen writer (oder reader) ? Irgendwie ist mir da noch nicht der große Durchblick gekommen ?

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:Wie komme ich von der Workbooksource zum richtigen writer (oder reader) ? Irgendwie ist mir da noch nicht der große Durchblick gekommen ?

Über den Format-Parameter, der beim Laden/Speichern angegeben ist, bzw. über die Dateiendung. Bei WorkbookSource ist das die Property "FileFormat". Das Workbook, das letzendlich das Lesen/Schreiben erledigt, erzeugt sich den Reader/Writer entsprechend dem Format-Parameter:

Workbook.ReadFromFile(..., AFormatID,...) ---> CreateSpreadReader(... AFormatID) --> reader := GetSpreadReaderClass(AFormatID).Create

Wobei das mit dem Format-Parameter im Detail etwas schwieriger ist. Zunächst gab es nur die hartkodierten SpreadsheetFormat-Werte vom Typ TsSpreadsheetFormat, wie sfExcel8 oder sfOpenDocument. Später habe ich das etwas aufgeweicht, um benutzerdefinierte Formate zu ermöglichen. Dies führte zur FormatID, die beim Registrieren des Reader/Writers vergeben wird; diese Formate haben die SpreadsheetFormat-Wert sfUser. Solange du keine eigenen Reader/Writer schreibst, ist der Unterschied aber egal.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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 »

Hier ein kleines Beispiel:

Es kann
-> Mehrere erweiterte WorkBookSourcen halten
-> AUs einem Template laden
-> Text ersetzen
-> DIe Workbooksourcen mit einem TabSheet umschalten
-> Die WorkBookSourcen speichern

Das ganze ist der abgespeckte Workflow, wenn man Excel-Sheets für Reports in Lazarus einsetzen will. Das Beispiel ist natürlich stark zusammengeschrumpft. Das Problem aber schön ersichtlich, wenn man dann 'Save XLSX' verwendet. FPC trunk ist aber notwendig wegen der fgl.

Andreas
Dateianhänge
MultiRead.7z
Beispiel zu Problem
(5.26 KiB) 74-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 »

Probier mal r5987. Ein seltsamer Fehler ist, dass trotz maximaler Spaltenzahl 256 als letzter Spaltenindex der Wert 256 in den COLINFO-Record geschrieben wird - das macht nicht nur OpenOffice, sondern auch Excel so! Auch das mit der Palettengröße macht nun keinen Fehler mehr.

Du hast in dem Programm noch das Problem, dass du die Dateien zwar als Format sfExcel8 liest/schreibst, aber im Dateinamen die Endung .xlsx angibst - richtig wäre .xls. Als Folge kann Excel die Datei nicht lesen, was mich anfangs etwas verwirrt hat.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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:Probier mal r5987.

Gestest, ist Ok. Habe mir auch die Änderungen angesehen, Hut ab, fpspreadsheet entwickelt sich immer mehr zu einer Hydra für mich :-) Ein paar Köpfe hättest du ja schon abgeschlagen.

wp_xyz hat geschrieben:Du hast in dem Programm noch das Problem, dass du die Dateien zwar als Format sfExcel8 liest/schreibst, aber im Dateinamen die Endung .xlsx angibst - richtig wäre .xls.

Gibt es eine Übersicht, welches Format was ist (zu Excel und OO) ?

Danke
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:Gibt es eine Übersicht, welches Format was ist (zu Excel und OO) ?

http://wiki.lazarus.freepascal.org/FPSp ... t#Workbook

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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 »

Danke, jetzt habe ich es gefunden, steht ein wenig tiefer

Code: Alles auswählen

*) *.xls  =  xlsbiff2, xlsbiff5 and xlsbiff8 for the binary xls file formats sfExcel2, sfExcel5 and sfExcel8, respectively,
*) *.xlsx =  xlsOOXML for the xlsx file format sfOOXML of Excel 2007 and later,

wenn man die Extension ein wenig herauszieht, so findet man es leichter, ich habe es echt Überlesen/Ignoriert.

Nochmals Danke

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: 6198
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 werde den Fehler/Hinweis nicht ganze nicht los :-)
Mehr als 256 Columns
Mehr als 256 Columns
fpspreadsheet03.JPG (20.09 KiB) 2141 mal betrachtet

OO/LibreOffice verursacht da scheinbar einige Probleme.

Edit: Diesmal war das Ausgangsformat Microsoft Excel 2007-2013 XML (*.xlsx)

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 »

Nochmals zum Verständnis: Du hast mit OpenOffice eine xlsx-Datei erstellt, die als Template per "Init"-Button in dein Demoprogramm geladen wird? Du speicherst dann als xls-Datei? Die Fehlermeldung kommt von deinem Programm? Kannst du die Template-xlsx-Datei posten?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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 »

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 »

Mit r5988 müsste das weg sein. Problem war, dass Excel und LO/OO bei einem leeren Worksheet den Wert 'A1' in den Dimension-Record schreiben (im Gegensatz zu z.B. 'A1:K10' bei einem Sheet, das Zellen zwischen A1 und K10 enthält). Der xlsx-Reader hat aber angenommen, dass immer ein gültiger Zell-Block (mit ':') ankommt und dabei das boolsche Ergebnis der Funktion ParseCellRangeString() nicht abgefragt - alles in allem: viele dumme Fehler...

Antworten