Italian community of Lazarus and Free Pascal

Programmazione => Componenti Aggiuntivi => Topic aperto da: muzzoman - Agosto 26, 2012, 06:04:28 pm

Titolo: FPSpreadsheet
Inserito da: muzzoman - Agosto 26, 2012, 06:04:28 pm
Ciao a tutti,
questo è il mio primo "post tecnico".
Ho avuto bisogno recentemente di leggere dei file *.xls (excel) contenenti record di dati per importarli all'interno di tabelle del database MySql dell'applicazione gestionale che sto sviluppando.
In prima battuta ho provato con OLE, come spiegato qui:
http://wiki.freepascal.org/Office_Automation (al paragrafo [Reading/Writing an Excel file using OLE]).
La cosa ha funzionato ma quando ho tentato di leggere un foglio con oltre 1000 righe la procedura me ne importava solo 254, inoltre per utilizzare questa tecnica è necessario che sulla macchina sia installato MS-Excel.
Siccome non volevo rompermi la testa nel capire perchè dalla 255esima riga in avanti non mi leggesse i dati e anche per svincolarmi da "mamma microsoft" ho deciso di provare FPSpreadsheet.
Di seguito racconto la mia esperienza, magari può essere utile a qualcun altro. Preciso che ho utilizzato il componente solo per leggere file excel e non per modificarli e/o crearli, ma da quanto leggo in giro la libreria si comporta egregiamente anche lì.

Codice: [Seleziona]
//       ****************
//       NELLA CLAUSOLA uses DEL FORM INSERIRE:
//       fpspreadsheetgrid , fpspreadsheet, fpsallformats
//       ****************
procedure Tprincipale.cmdApriExcelClick(Sender: TObject);
var
  sFile: string;
begin
  sFile:=openDialog1.FileName;
  if sFile='' then
    begin
      showmessage('selezionare il file excel!');
      exit;
    end;
  // *** QUESTA E' LA RIGA CHE CARICA I DATI
  gri.LoadFromSpreadsheetFile(sFile);
  // **********************************
  lblNumRecord.Caption:=intToStr(gri.RowCount)+' righe'; // visualizza num. righe
end;

Spero di non avere scritto inesattezze, nel caso fatemelo sapere.

Un saluto
Titolo: Re:FPSpreadsheet
Inserito da: bonmario - Agosto 26, 2012, 06:37:46 pm
L'ho usato anch'io al lavoro con un foglio di Calc (OpenOffice) di circa 8000 righe senza problemi. Io lo uso senza installarlo: metto nella uses dei programmi in cui mi serve l'elenco delle sue unit.
Al momenti le uniche cose che mi mancano sono:
- il riconoscimento dei caratteri "barrati"
- il riconoscimento del colore di sfondo

Nei nostri documenti di lavoro infatti il colore di sfondo ci serve per capire in che stato è una determinata cella. In ogni caso è veramente un gran bel componente.

Ciao, Mario
Titolo: Re:FPSpreadsheet
Inserito da: bonmario - Agosto 29, 2012, 09:40:17 am
Ciao a tutti,
mi accodo a questo thread per non aprirne uno nuovo ...
Sono io che non lo trovo o non c'è la possibilità di leggere un campo di tipo "Data"? Fino ad ora mi era capitato di leggere numeri e stringhe senza problemi. Adesso devo leggere una colonna le cui caselle sono dichiarate come "Data", ma non capisco come si fa.
Ho provato leggendola come stringa, ma è sempre vuota, come numero mi da un errore ...

Grazie in anticipo, Mario
Titolo: Re:FPSpreadsheet
Inserito da: bonmario - Agosto 29, 2012, 01:25:21 pm
Mi rispondo da solo: non è supportato nei files di Calc (*.ods).

Ciao, Mario
Titolo: Re:FPSpreadsheet
Inserito da: ffabio - Settembre 14, 2015, 10:50:24 am
Mi accodo a questo tpioc con un problema .

Se in un file di open office ho un immagine nel file che apro all interno di lazarus non la trovo e se salvo il file mi cancella immagine che era presente sul file qualcuno ha avuto lo stesso problema ??

grazie
Titolo: Re:FPSpreadsheet
Inserito da: bonmario - Settembre 14, 2015, 01:25:57 pm
Ciao, ho fatto una prova.
Le immagini le trovi nelle sottodirectory "Pictures".
Più che altro, non so se FPSpreadsheet supporta la lettura ed il salvataggioo delle immagini.
Ti conviene provare a chiedere all'autore nel forum in inglese.

Ciao, Mario
Titolo: Re:FPSpreadsheet
Inserito da: ffabio - Settembre 14, 2015, 03:02:30 pm
ok grazie . infatti cerco di aprire un file con un immagine e non la carica .

Ho provato anche con gli esempi sai che ci sono nella cartella ma niente ..

grazie
Titolo: Re:FPSpreadsheet
Inserito da: bonmario - Settembre 14, 2015, 06:15:49 pm
Ti conviene chiedere sul forum inglese, io non ho mai avuto bisogno delle immagini, quindi non so come funziona.
Al massimo, potresti prima provare a scaricare la versione in sviluppo tramite SVN e vedere se lì la cosa è stata implementata.

Ciao, Mario
Titolo: Re:FPSpreadsheet
Inserito da: ffabio - Settembre 15, 2015, 12:40:30 pm
grazie bonmario . ho fatto speriamo mi rispondano . io ho scaricato l'ultima la 1.6.0.

Visto che sei molto bravo .. io ho caricato da nel controllo il mio file . e lo vedo vorrei selezionare due o piu colonne com in excel e copiarle in una griglia a parte ... sai come si fa ???

grazie  :'( :'( :'(
Titolo: Re:FPSpreadsheet
Inserito da: bonmario - Settembre 15, 2015, 01:24:16 pm
Mi dispiace, ma non tio so aiutare.
A me serviva solo leggere delle caselle particolari da determinate colonne, non ho mai emesso a video i dati e non ho nemmeno installato il pacchetto ...
Ti consiglierei di guardare nelle proprietà dell'oggetto se c'è qualcosa che fa al caso tuo.

Ciao, Mario
Titolo: Re:FPSpreadsheet
Inserito da: kelly - Giugno 08, 2017, 05:28:49 pm
Salve,

Come faccio a leggere il valore dalle celle di una worksheetgrid?


grazie
Titolo: Re:FPSpreadsheet
Inserito da: xinyiman - Giugno 09, 2017, 10:10:16 am
Ti consiglio di usare una TWorkSheetGrid poi fai il caricamento del file excel in tale componente e successivamente leggi il valore delle celle che ti interessano. Qui un piccolo esempio

http://forum.lazarus.freepascal.org/index.php?topic=30442.0