Newsgroup: it.comp.www.asp
Titolo: asp che legge dati xls

Buongiorno.
Avrei bisogno di lavorare, tramite uno script asp, su dati da un
foglio xls di Excell.
Fare estrazioni da un mdb è banale, si imposta il dsn negli odbc, e
poi si fa un:
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "importacompu-dsn"
Set rs = conn.execute(sql)
Dopo aver impostato la stringa "sql".
Tra i driver odbc vedo che ci sono anche quelli per xls, il che mi fa
sospettare che si possano estrarre i dati in maniera analoga.
Solo che mi vado a scontrare su questo problema: che campi estraggo?
Con gli mdb faccio un rs("nomecampo"), ma con un xls cosa faccio?
Qualche idea? Grazie!
-- 
Massimo Bacilieri AKA Crononauta
ulib...@libero.it
 ; ICQ UIN: 4005815
»»» Un buon antivirus? Disinstallare Outlook Express!!!

Solo che mi vado a scontrare su questo problema: che campi estraggo?
Allora... ce l'ho fatta da solo guardando (incredibilmente per la
prima volta utile) il sito della Microsoft...
Posto qui la soluzione, non si sa mai che serva a qualcuno.
La prima cosa da fare è lavorare sul file xls che si vuole importare.
Bisogna avere i dati in questa forma (non importa se prima o dopo ci
sono altre righe, spiegazioni o altro):
	A	B	C	D	E	F
1	v1	v2	v3	v4	v5	v6
2	10	11	12	13	14	15
3	16	17	18	19	20	21
4	22	23	24	25	26	27
etc., dove v1, v2... v6 sono le etichette delle colonne dei valori, e
10, 11... 27 sono i dati delle celle (chiaramente questi sono un
esempio).
Poi bisogna evidenziare la zona A1...F4 e assegnarle un nome, p.e.
"datixls" col normale comando di menu "inserisci - nome - definisci".
Attenzione perché la prima riga di etichette *ci vuole* (non so
perché... ma è richiesta!).
Ora occorre creare un dsn per quel file, ovviamente come driver si usa
quello di microsoft excell xls, e come sorgente dei dati quella della
posizione del file. Chiamiamolo es. "floglioxls-dsn".
Dopodiché si può preparare lo script che ne estrae i dati, come
esempio uso uno script che stampa su una tabella i dati estratti
dall'xls:
--- inizio script ---
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "foglioxls-dsn"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.ActiveConnection = objConn
objRS.CursorType = 3
objRS.LockType = 2
objRS.Source = "Select * from datixls"
objRS.Open
%>
<table>
<tr>
<td>Colonna A</td><td>Colonna B</td><td>Colonna C</td><td>Colonna D</td><td>Colonna E</td><td>Colonna F</td>
</tr>
<%
Do while not objRS.eof
	%>
	<tr>
	<td><%response.write(objRS.Fields.Item(0).Value)%></td>
	<td><%response.write(objRS.Fields.Item(1).Value%></td>
	<td><%response.write(objRS.Fields.Item(2).Value%></td>
	<td><%response.write(objRS.Fields.Item(4).Value%></td>
	<td><%response.write(objRS.Fields.Item(5).Value%></td>
	<td><%response.write(objRS.Fields.Item(6).Value%></td>
	</tr>
	<%
	objRS.MoveNext
loop
objRS.close
objConn.close
%>
</table>
--- fine script ---
Se tutto è andato bene, visualizzando la pagina contenente questo
script, dovrei vedere una cosa di questo tipo:
Colonna A	Colonna B	Colonna C	Colonna D	Colonna E	Colonna F
10			11			12			13			14			15
16			17			18			19			20			21
22			23			24			25			26			27
(ovviamente l'output sarà su una table html, non in testo piano come
ho fatto qui!)
E' chiaro che i dati uno li può utilizzare come meglio crede, fatto
salvo che il valore dalla cella di excell viene estratto con:
objRS.Fields.Item(X).Value
Ecco tutto.
Spero di essere stato utile a qualcuno.
