Newsgroup: it.comp.lang.delphi
Titolo: D2006 Lettura formule da Excel ed esecuzione

Ciao a tutti,
devo leggere un foglio di excel contenente delle formule tipo 
=(ARCTAN($C31/300)*180/PI.GRECO())
Al momento sono riuscito a leggere la formula ed sostiuire i valori 
($C31, 
ARCTAN, PI.GRECO() ).
Il mio problema e' che vorrei ottenere il risultato della formula,
cioe' se $C31 = 100
tradotto x delphi avrei :  (ARCTAN(100/300)*180/PI)
Avendo il tutto in una stringa, come posso ottenre il risultato ( da
Excell 
: 18,43494882...) ?
Qualche suggerimento?
Grazie
Ciao
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

non ho provato ma se per esempio la cella contenente la formula e' al
C33 ed assegni ad una cella vuota il risultato con  =C33 dovresti
leggere il risultato, ciao Brunello

 leggere il risultato, ciao Brunello
Grazie per la risposta.
Forse mi sono spiegato male.
giornalemnte ho una serie di Documenti di EXCEL da importare in un'
applicativo delphi.
Diverse celle (circa 15 per foglio ) contengono un formula, io
vorrei importare la formula nell' applicativo ( in un campo string) e
quando richiesto vorrei eseguire quella determinata formula.
Grazie Ancora
Ciao
Loris


 quando richiesto vorrei eseguire quella determinata formula.
Forse sei stato più chiaro prima :)
Tu in delphi hai una stringa che contiene una formula specificata in 
sintassi Excel, ma con i riferimenti alle celle sostituiti con i loro 
valori: tu vorresti *in delphi* eseguirla?
1) ma perché???
2) ti rendi conto di quello che stai chiedendo? probabilmente no.
Excel ha il *suo* motore di calcolo con il *suo* parser di formule che 
capisce le formule nella *sua* sintassi, e lo stesso discorso vale per 
un compilatore Delphi.
Se hai la formula "=SOMMA(100;60)", è ovvio che *tu* (umano) ci arrivi 
che in Delphi dovresti fare x := 100+60 perché hai capacità deduttive, 
ma come credi che possa capirlo il compilatore?
E sto parlando di funzioni semplici. Pensa alle miriadi di funzioni per 
cui non c'è una corrispondenza diretta in Delphi.
L'unica tua speranza è quella di trovare un parser per formule di excel 
in delphi... io ho cercato alla veloce e (come pensavo) non ho trovato 
niente, ma tentar non nuoce, se è questo che ti serve. Si sa mai che 
qualche pazzo... :)
-- 
Jax

 leggere il risultato, ciao Brunello
Grazie per la risposta.
Forse mi sono spiegato male.
giornalemnte ho una serie di Documenti di EXCEL da importare in un'
applicativo delphi.
Diverse celle (circa 15 per foglio ) contengono un formula, io
vorrei importare la formula nell' applicativo ( in un campo string) e
quando richiesto vorrei eseguire quella determinata formula.
Grazie Ancora
Ciao
Loris


Jax ha scritto:



Purtroppo e' proprio quello che mi serve......
Le formule sono tutte "relativamente" semplici.....
Sono le classiche 4 operazioni + seno/coseno/arcotan.
SOMMA(100;60) -> Cose seimili non sono previste 
Se proprio non trovo nulla... mi costruisco qualcosa ad-oh!
Grazie
Ancora.


 -- 
Dovresti copiare in modalità risultato le celle con le formule
in celle di tua scelta e quindi importare queste ultime.
Excel può copiare una cella sostituendo alla formula il VALORE calcolato
e questo dovrebbe essere proprio quello che serve a te.
In questo modo importeresti delle celle con valore costante (le tue).
Ciao
C. 

 Se proprio non trovo nulla... mi costruisco qualcosa ad-oh!
Se sai già quali sono le formule, e sono poche, e sai più o meno come 
trattarle, hai buone probabilità di farcela. In ogni caso, forse ti 
conviene prendere spunto da qualche parser matematico già fatto, dato 
che costruirsene uno, seppur banale, può rivelarsi più complicato di 
quel che sembra e farti perdere parecchio tempo.
Questo, per esempio:
http://www.bestcode.com/html/tbcparser.html
(solo che non è gratuito)
o questo
http://www.myart.bz/pisarev.net/
Ovviamente (grazie a Microsoft) devi tradurre i nomi diversi delle 
funzioni, che fortunatamente sembra che si limitino a SEN=SIN (quindi in 
teoria ti basta un StringReplace).
In bocca al lupo e scusa se prima sono stato un po' catastrofico :)
-- 
Jax

 In bocca al lupo e scusa se prima sono stato un po' catastrofico :)
Nessun problema, devo solo ringraziarti per i siti che mi hai dato...
Dalle prime prove sembra funzionare, poi doamni con piu' calma provo e poi 
ti faccio sapere.
Ti devo (almeno) un caffè!


Confermo.
Funziona.


 Funziona.
Mi fa piacere :)
-- 
Jax