Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: Fabio - Ottobre 26, 2011, 03:29:52 pm

Titolo: fpspreadsheet come usarlo?
Inserito da: Fabio - Ottobre 26, 2011, 03:29:52 pm
Già che ci siamo vediamo se mi chiarite anche questo  :D

Ho da leggere dei file Excel e fare certe operazioni con i dati contenuti.

Ho trovato alcuni componenti esterni ma preferisco usarne il meno possibile.

Ho sentito di questo componente fpspreadsheet reperibile solo via SVN qui
http://lazarus-ccr.svn.sourceforge.net/viewvc/lazarus-ccr/components/fpspreadsheet/

Ho scaricato da sotto dove dice "Download GNU tarball" e poi ho aggiunto il pacchetto in Lazarus ricompilando l'IDE, solo che ora non so come richiamarlo dal progetto, non trovo nessun fpspreadsheet da aggiungere nello "uses"

Lo avete già provato per caso?
Titolo: Re:fpspreadsheet come usarlo?
Inserito da: xinyiman - Ottobre 26, 2011, 03:34:37 pm
Si lo avevo provato e mi era stata molto utile questa pagina

http://wiki.lazarus.freepascal.org/FPSpreadsheet

Per usarlo devi mettere le seguenti unit

uses
 ...,fpspreadsheet, fpsallformats, fpspreadsheet_pkg;

Fammi sapere.  ;)
Titolo: Re:fpspreadsheet come usarlo?
Inserito da: Fabio - Ottobre 26, 2011, 03:50:17 pm
E' proprio quello il problema, pur avendo compilato l'IDE e pur vedendo il componente nei pacchetti installati se provo a scriverlo e a richiamare il code completation dell' IDE non me lo vede lo stesso.

Se lo forzo a mano e metto quello che mi hai detto ottengo questo:
Codice: [Seleziona]
Unit1.pas(9,20) Fatal: Can't find unit fpspreadsheet used by Unit1
Titolo: Re:fpspreadsheet come usarlo?
Inserito da: xinyiman - Ottobre 26, 2011, 04:45:34 pm
Allora, per prima cosa ho scaricato ed installato la versione SVN dalla pagina che ti avevo linkato poco sopra.

Poi sono andato a spulciare gli esempi contenuti nel pacchetto, tipo qui:

\fpspreadsheet\examples\excel5demo

E ho provato a compilarli. Funzionano, devono essere cambiati i nomi delle unit rispetto all'esempio online.
Titolo: Re:fpspreadsheet come usarlo?
Inserito da: Loryea - Ottobre 26, 2011, 09:38:03 pm
Mi spiace per l'ignoranza, ma io non ho proprio capito cos'é fpspreadsheet, i siti non sono così chiari... Se qualcuno sarebbe così gentile da farmi un risassunto generale, potrei provare anch'io a scaricare la SVN e a compilare qualche decina righe per farvi sapere, OK?
Titolo: Re:fpspreadsheet come usarlo?
Inserito da: xinyiman - Ottobre 26, 2011, 11:46:45 pm
Se vai a questa pagina http://wiki.lazarus.freepascal.org/FPSpreadsheet troverai il link per scaricare tramite svn, che è il seguente:

svn co https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/fpspreadsheet fpspreadsheet

Devi scaricare questi dati nella directory components dove è installato Lazarus. Poi avvi Lazarus e installi il nuovo package tramite la solita procedura per installare i file .lpk

Una volta installato nella stessa cartella scaricata con svn trovi anche una cartella che si chiama examples in cui trovi degli esempi (solo più da compilare) per capire come funziona. Spero di essere riuscito a spiegarmi correttamente.
Titolo: Re:fpspreadsheet come usarlo?
Inserito da: Fabio - Ottobre 27, 2011, 08:44:39 am
Allora ho provato ad aprire direttamente il file di esempio "excel5demo" e non chiedermi il perchè su quello il pacchetto lo riconosce  :o

Ora voi che siete più esperti mi sapete spiegare come mai questo sul progetto di esempio la unit fpspreadsheet la riconosce:

Codice: [Seleziona]
uses
  Classes, SysUtils, fpspreadsheet, xlsbiff5,
  laz_fpspreadsheet;

E invece nel mio fpspreadsheet dice che è inesistente?

Codice: [Seleziona]
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  EditBtn, fpspreadsheet, fpsallformats, fpspreadsheet_pkg;

Da qualche parte nelle proprietà del progetto serve aggiungere ancora qualcosa?

Ah giusto per informazione nel mio progetto non riconosce nemmeno gli altri due xlsbiff5 e laz_fpspreadsheet
Titolo: Re:fpspreadsheet come usarlo?
Inserito da: Fabio - Ottobre 27, 2011, 10:17:36 am
Se puoi magari prova a fare un nuovo progertto e guarda se a te i pacchetti te li riconosce oppure no, nell'esempio funziona ma se faccio nuovo progetto non c'è verso a farglielo riconoscere, per questo presumo che manchi qualcosa a livello di progetto che non vedo.
Titolo: Re:fpspreadsheet come usarlo?
Inserito da: Fabio - Ottobre 27, 2011, 11:28:08 am
Trovato  :D

Ho aperto il menu Progetto, Analizzatore Progetti.
Ho fatto Aggiungi, Nuovo requisito
In Nome pacchetto ho forzato laz_fpspreadsheet
Dopo questo mi ha riconosciuto le aggiunte.
Ora provo se riesco a cavarne qualcosa.
Titolo: Re:fpspreadsheet come usarlo?
Inserito da: Fabio - Ottobre 27, 2011, 03:02:05 pm
Alè primi errori.

Dichiaro come:
Codice: [Seleziona]
xlsWrkB: TsWorkbook;
xlsWrkS: TsWorksheet;

E poi provo a leggere un file Excel esistente ma va già in errore qua ( ovviamente fileName è istanziato con il percorso completo al file da aprire ):

Codice: [Seleziona]
xlsWrkB.ReadFromFile(fileName);

Ho provato anche a passare come secondo parametro sia sfExcel5 che sfExcel8 ( subito non l'ho messo che sulla doc si diceva che faceva da solo in automatico se non metti niente ).

L'errore che ottengo in caso di nessun secondo parametro è:

Citazione
blablabla ... raised exception class 'External: SIGSEGV'.

In caso metta ad esempio sfExcel5 ottengo invece:

Citazione
blablabla ... raised exception class 'EStreamError' with message: unable to open /Book

Ogni consiglio è ben accetto  :D
Titolo: Re:fpspreadsheet come usarlo?
Inserito da: Fabio - Ottobre 27, 2011, 03:06:54 pm
Ehm  :-[ come non detto.

Manvaca:

Codice: [Seleziona]
xlsWrkB:=TsWorkbook.Create;

prima del ReadFromFile, sorry.
Titolo: Re:fpspreadsheet come usarlo?
Inserito da: Fabio - Ottobre 27, 2011, 03:16:05 pm
Per completezza aggiungo i comandi per leggere il contenuto di una cella:

Codice: [Seleziona]
var
  fileName: String;
  xlsWrkB: TsWorkbook;
  xlsWrkS: TsWorksheet;

begin
     fileName:='c:\miodoc.xls'; {selezionabile magari da un TFileNameEdit}
     xlsWrkB:=TsWorkbook.Create;
     xlsWrkB.ReadFromFile(fileName);
     xlsWrkS:=xlsWrkB.GetFirstWorksheet;
     ShowMessage(xlsWrkS.ReadAsUTF8Text(1,1)); {mostra il contenuto della cella B2}
end;
Titolo: Re:fpspreadsheet come usarlo?
Inserito da: xinyiman - Ottobre 27, 2011, 03:35:29 pm
Bravo :)

Quindi ora ti sei impadronito dello strumento :)
Titolo: Re:fpspreadsheet come usarlo?
Inserito da: Gersen - Febbraio 04, 2012, 11:00:19 am
Ho provato anch'io questo codice, ma l'ultima riga da sempre errore:

ShowMessage(xlsWrkS.ReadAsUTF8Text(1,1)); {mostra il contenuto della cella B2} 

Errore: Project (nome progetto) raised exception class 'External: SIGSEGV'.
Titolo: Re:fpspreadsheet come usarlo?
Inserito da: xinyiman - Febbraio 05, 2012, 10:10:25 pm
Gersen dicci di più, posta il tuo codice e dicci cosa fa...