Newsgroup: it.comp.lang.javascript
Titolo: importare dati da un file excel

è possibile in qualche modo??
o magari importarli da un txt??

 o magari importarli da un txt??
Forse, solo con IE e in un Intranet...


Importarli al volo (cioe' che io metto il file, la pagina me li importa e se
poi io cambio il file la pagina si adegua di conseguenza), o una volta per
tutte (ovvero che io c'ho un file excel con una tabella e devo fare un html
che riprodoce tale tabella una volta per tutte senza che debba essere
automaticamente aggiornata)?
Ciao,
Ema

 > č possibile in qualche modo??


 conseguenza ok??
Allora, secondo me, con javascript non si puo' leggere un file excel. O per
lo meno non lo so fare.
Se questi file excel cambiano nel tempo non c'e' soluzione.
Se invece i file sono statici, si potrebbe tradurli in opportune tabelle
html che vengono visualizzate o meno a seconda che l'utente inserisca 1 o 2,
ecc.
Forse con scripting lato server si potrebbe far qualcosa, ma sarebbe un gran
grattacapo.
Boh, spero che qualcun'altro ti sappia aiutare meglio di me.
Ciao,
Ema

 > se si può fare qualcosa di dinamico cosi avvisami che poi agisco io di


 o magari importarli da un txt??
Con le stesse restrizioni ie / win di cui sopra con un FileSystemObject e un
tot di parsing del testo.
Ovviamente a meno che ADO non disponga, probabile tra l'altro, anche di un
provider dati per i file di testo. Dai un occhiata con google.

 ha scritto nel messaggio
news:ba5k8r$pp1jl$1...@ID-167519.news.dfncis.de...


 capite...
Ops, date per scontate troppe cose. Un aiuto veloce perche' gli argomenti
sono vasti e, visto che non hai le tette, per sfatare il mito che privilegia
le signorine. Ma sono cosi' poche che incoraggiarle e' bene...
Innanzitutto due riferimenti.
per ADO: 
http://msdn.microsoft.com/library/en-us/ado270/htm/mdaobj01.asp
per sql non ti so consigliare una buona guida, ma google si'.
Un recordset ADO (ActiveXDataObjects) e' la maniera piu' comune in ambiente
win per "stoccare" dati strutturati provenienti da db, xml, file di excel,
dal nostro codice, ecc.
Detto ActiveX ribadisco che rimaniamo con ie e win.
Prima di tutto istanza dell'oggetto:
var objRS = new ActiveXObject("ADODB.Recordset");
Dopodiche' "apriamo" il nostro contenitore. Il metodo in questione accetta
vari parametri ma cito solo quelli essenziali: il nome di una tabella /
query / vista o un'istruzione SQL, una stringa di connessione che indica il
provider dati, proprieta' del cursore, stato di lock (per essere riduttivi:
permessi di lettura / scrittura).
Nel nostro caso avendo definito la stringa sql e di connessione:
var strConn="Provider = Microsoft.Jet.OLEDB.4.0; Data Source =
xls\\FILENAME; Extended
Properties=Excel 8.0;";
var strSQL="SELECT * FROM nomeFoglioDiLavoro$A1:F10";
// che essenzialmente vuol dire prendi tutto quel che c'e' nel foglio
menzionato da A1 a F10
objRS.Open(strSQL,strConn,0,1);
// per una semplice lettura dei dati muovendosi solo in avanti
Fatto questo il nostro recordset dovrebbe essere pieno.
Scrivo due righe che ne ciclano e stampano il contenuto:
document.open("text/html");
// la proprieta' EOF diventa true quando siamo alla fine del recordset
while(!objRS.EOF){
    for(i=0;i<objRS.Fields.Count;i++){
        document.write("<b>"+objRS.Fields(i).Name+":&nbsp;</b>");
        document.write(objRS.Fields(i).Value+"<br>");
    }
    document.write("<br><br>---------------<br><br>");
    objRS.MoveNext();
}
document.close();
objRS.Close(); // chiudo anche il recordset
objRS=null; // ne libero il riferimento in memoria
Credo sia abbastanza comprensibile.
Approfondisci comunque gli argomenti.

 capite...
Ops, date per scontate troppe cose. Un aiuto veloce perche' gli argomenti
sono vasti e, visto che non hai le tette, per sfatare il mito che privilegia
le signorine. Ma sono cosi' poche che incoraggiarle e' bene...
Innanzitutto due riferimenti.
per ADO: 
http://msdn.microsoft.com/library/en-us/ado270/htm/mdaobj01.asp
per sql non ti so consigliare una buona guida, ma google si'.
Un recordset ADO (ActiveXDataObjects) e' la maniera piu' comune in ambiente
win per "stoccare" dati strutturati provenienti da db, xml, file di excel,
dal nostro codice, ecc.
Detto ActiveX ribadisco che rimaniamo con ie e win.
Prima di tutto istanza dell'oggetto:
var objRS = new ActiveXObject("ADODB.Recordset");
Dopodiche' "apriamo" il nostro contenitore. Il metodo in questione accetta
vari parametri ma cito solo quelli essenziali: il nome di una tabella /
query / vista o un'istruzione SQL, una stringa di connessione che indica il
provider dati, proprieta' del cursore, stato di lock (per essere riduttivi:
permessi di lettura / scrittura).
Nel nostro caso avendo definito la stringa sql e di connessione:
var strConn="Provider = Microsoft.Jet.OLEDB.4.0; Data Source =
xls\\FILENAME; Extended


 ha scritto nel messaggio
news:ba5pvg$pg3ne$1...@ID-167519.news.dfncis.de...


ho guardato il sito che mi hai menzionato ma essendo poco esperto ci ho
capito proprio poco....
vediamo allora se ho capito...
supponiamo che ho un file excel di nome EXCEL.XLS
e di voler visualizzare il contenuto della cartella CART1 per le celle da A1
a C3
prima creo quella che ha chiamato istanza cosi...
var objRS = new ActiveXObject("ADODB.Recordset");
poi creo quest'altra variabile
var strConn="Provider = Microsoft.Jet.OLEDB.4.0; Data Source =
xls\\EXCEL.XLS;
Extended Properties=Excel 8.0;";
e poi questa
var strSQL="SELECT * FROM EXCEL.XLS $A1:F10";
cosi??? credo di no perchè mi sembra simile alla variabile strConn....

 var strSQL="SELECT * FROM EXCEL.XLS $A1:F10";
No, no. Approfondisci prima gli argomenti, altrimenti rischi di fare solo un
collage / pastrocchio in cui non riuscirai piu' a infilare neanche il naso.
Essenzialmente stiamo trattando Excel come fosse un qualunque database.
SQL e' un linguaggio standard per interrogare le banche dati (ovviamente
standard con una tonnellata di "dialetti").
Come ti ho detto non conosco una buona guida, ma queste sono le basi e puoi
accontentarti anche di quanto c'e' su 
html.it
Traducendo in italiano: prendi tutti i campi (*) dalla tabella xxx.
Quando abbiamo un db ci riferiremo al nome della tabella (o query o vista),
trattandosi di excel abbiamo solo piu' fogli di lavoro con svariate celle.
Quindi li' devi mettere il nome del foglio di lavoro seguito dal simbolo "$"
e dall'intervallo di celle da considerare.
In caso di caratteri speciali includi il tutto tra quadre: SELECT * FROM
[Nome Del Foglio di Lavoro$A1:F10]
Nel nostro caso la variabile strConn contiene le informazioni sul file a cui
dobbiamo "connetterci" per recuperare dati, la variabile strSQL e' il
comando che verra' eseguito per recuperare solo i dati che ci interessano
per riempire il nostro contenitore (objRS).