+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 5 su 5

proprietà TsCellEdit e fpspreadsheet

  1. #1
    picavbg non è in linea Novello
    Da qualche mese mi dedico allo studio di Lazarus-freePascal nel mio ambiente operativo Linux fedora.
    Sto scrivendo un programma col quale devo estrarre il contenuto delle celle di fogli di calcolo .ods e .xls.
    Fra esse vi sono celle che contengono formule aritmetiche come "=12,3+7,1+8-5,2".
    Ho letto nel wiki che i fogli di calcolo dispongono della proprietà TsCellEdit che ha il compito di mostrare nella riga di modifica il contenuto dell'intera formula.
    Ciò permette infatti di vedere, per la cella selezionata, il risultato della somma dentro la cella e la sua formula intera nella riga di modifica.
    per estrarre il contenuto delle celle, utilizzo in Lazarus la libreria fpspreadsheet:
    cellaCorr:= foglioCorr.ReadAsText(xi,yi);
    
    che trasferisce in cellaCorr il risultato della sommatoria. Fin qui va bene.

    Quello che non riesco ad ottenere è la stringa con la formula aritmetica. Ho provato con :
    cella:=  foglioCorr.FindCell(xi, yi);
    formula:= foglioCorr.ReadFormulaAsString(cella, false);
    
    e
    cella:=  foglioCorr.FindCell(xi, yi);
    formula:= foglioCorr.ReadAsUTF8Text(cella);
    
    ma in entrambi i casi non mi vengono restituiti valori.

    Ma allora qual'è la propietà da richiamare per ottenere la stringa che cerco?

    Spero tanto che qualcuno mi possa dare un'indicazione illuminante.

  2. #2
    Ferrari_and non è in linea Scolaretto
     cella := foglioCorr.FindCell(xi, yi);
      WriteLn('The formula in internal format is ', foglioCorr.ReadFormula(cella));
      WriteLn('The localized formula is ', foglioCorr.ReadFormulaAsString(cella, true));
    
    Non so quale dei 2 ti possa servire

    https://wiki.lazarus.freepascal.org/...tring_formulas
    Guarda qui per altri esempi

  3. #3
    picavbg non è in linea Novello
    @Ferrari_and
    Ti ringrazio per il tuo interessamento.
    Sono prove che ho già fatte, comunque le ho ripetute:
       cella:=  foglioCorr.FindCell(xi, yi);
       WriteLn('istruzione *foglioCorr.ReadFormula(cella)* |-' + foglioCorr.ReadFormula(cella) + '-|');
       WriteLn('istruzione *foglioCorr.ReadFormulaAsString(cella, true)* |-' + foglioCorr.ReadFormulaAsString(cella, true) + '-|');
    
    ecco il risultato:
    istruzione *foglioCorr.ReadFormula(cella)* |--|
    istruzione *foglioCorr.ReadFormulaAsString(cella, true)* |--|
    Come vedi, all'interno dei simboli "|-" e "-|" non c'è niente. Credo proprio che la strada da percorrere sia un'altra.

  4. #4
    Ferrari_and non è in linea Scolaretto
    Ma con solo cosa da

     WriteLn(foglioCorr.ReadFormula(cella));
     WriteLn(foglioCorr.ReadFormulaAsString(cella, true));
    

  5. #5
    picavbg non è in linea Novello
    Quote Originariamente inviato da Ferrari_and Visualizza il messaggio
    Ma con solo cosa da

     WriteLn(foglioCorr.ReadFormula(cella));
     WriteLn(foglioCorr.ReadFormulaAsString(cella, true));
    
    Non capisco cosa dovrebbe cambiare rispetto alla prova già fatta prima, comunque ho provato le istruzioni, così come me le hai proposte ora.

    Non viene fuori proprio niente.

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risolto: [ASP.NET]Proprietà vuota
    Da ubimaior nel forum ASP 3, ASP .Net
    Risposte: 4
    Ultimo Post: 17-11-2011, 20:07
  2. Proprietà Address Of
    Da roccolamann nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 26-09-2010, 12:53
  3. Proprietà textbox
    Da camp nel forum Visual Basic 6
    Risposte: 4
    Ultimo Post: 10-11-2009, 18:09
  4. Proprieta' datareport
    Da Mercante in fiera nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 25-09-2008, 20:55
  5. proprietà delete
    Da Diablo nel forum Microsoft Word
    Risposte: 4
    Ultimo Post: 22-08-2005, 11:54