Come creare un foglio Excel senza avere Excel installato

Seguendo un thread ho letto una richiesta di qualcuno che aveva bisogno di creare  e gestire un foglio excel e di gestirlo da VB6.
Ho fatto la stessa cosa anche per C# non credo ci sia bisogno che lo dimostri anche su VB.NET .
Questa la versione per C#
 
Questa la mia soluzione.
 
  • Aprire un nuovo progetto VB6
  • Aggiungere il riferimento ad ADO
 
Senza avere l'automazione di Excel a disposizione bisognerebbe utilizzare ADOX.
Sfruttando una feature di ADO / SQL è possibile invece generare un nuovo foglio in una nuova cartella di lavoro excel oppure aggiungere un foglio ad una cartella già esistente.
 
Quello che conta è riuscire a sfruttare opportunamente le possibilità:
 
L'istruzione SQL che fa al caso nostro è: "SELECT campo, campo2 INTO".
E' necessario avere l'accortezza di impostare la nostra SELECT con i campi "così come li vorremmo" sul foglio excel.
 
Ad esempio se volessi un foglio con due colonne scriverei:
SELECT campo1 AS Colonna1, campo2 AS Colonna2 INTO …"
Naturalmente campo1 e campo2 devono essere campi della tabella "FROM " o essere calcolabili dinamicamente.
 
A questo punto abbiamo quasi tutto quello che ci serve per scrivere la nostra query, l'ultimo elemento è un database access qualsiasi da cui "succhiare" il nostro foglio Excel (io nell'esempio ho utilizzato la versione inglese del database northwind che, visto che non amo i nomi lunghi ho ridotto a nwind).
 
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\access\NWind.mdb;Persist Security Info=False"
cn.Open
Dim strSQL As String
strSQL = "SELECT * INTO [Excel 8.0;Database=c:\prove\prova.xls].[Foglio1] FROM Customers"
cn.Execute strSQL
cn.Close
 
A questo punto il Foglio1 è creato.
La connessione si riutilizza con il foglio Excel e come prima operazione si manda un "DELETE FROM" per eliminare i dati che ci sono.
 
Un riferimento:
How To Transfer Data from ADO Data Source to Excel with ADO
 

Print | posted on venerdì 15 luglio 2005 21:57

Feedback

# re: Come creare un foglio Excel senza avere Excel installato

Left by Luciano Bastianello at 05/07/2005 01:54
Gravatar Non c'è la necessità di binding (late o early).
Il foglio excel è visto come una fonte dati ADO, così come potrebbe essere un file .txt (testo) o .dbf (dbase).
Sono pertanto sicuro che non c'è bisogno di avere excel installato per produrre un file excel (e poi basta provare visto che la prova è molto facile da fare!).

# re: Come creare un foglio Excel senza avere Excel installato

Left by Andrea at 15/07/2005 20:47
Gravatar Grazie per la 'dritta', la spiegazione e' molto chiara ed il codice e' facilissimo da usare per dare una feature in piu' oltre alla solita stampa. Che tu sappia esiste qualcosa di simile anche per C#.Net ? Ringrazio in anticipo per la risposta.

# re: Come creare un foglio Excel senza avere Excel installato

Left by Luciano Bastianello at 15/07/2005 21:52
Gravatar A questo link puoi trovare quello che chiedi
http://community.visual-basic.it/lucianob/articles/15924.aspx

# re: Come creare un foglio Excel senza avere Excel installato

Left by syynapse at 25/10/2006 18:35
Gravatar lanciando questa query in oracle, ovviamente coin le opportune modifiche relative al nome tabella ecc.., ottengo un errore...
???

# [Excel] Creare file xls compatibili col viewer - MasterDrive.it - Information Technology Developers Community

Left by Pingback/TrackBack at 04/12/2007 21:12
Gravatar [Excel] Creare file xls compatibili col viewer - MasterDrive.it - Information Technology Developers Community

# esportare dati in [Excel] - MasterDrive.it - Information Technology Developers Community

Left by Pingback/TrackBack at 06/02/2008 13:28
Gravatar esportare dati in [Excel] - MasterDrive.it - Information Technology Developers Community

# esportare dati in [Excel] - MasterDrive.it - Information Technology Developers Community

Left by Pingback/TrackBack at 06/02/2008 13:56
Gravatar esportare dati in [Excel] - MasterDrive.it - Information Technology Developers Community

# re: Come creare un foglio Excel senza avere Excel installato

Left by franco firpo at 07/02/2008 14:33
Gravatar ciao Luciano.
ci siamo "sentiti" sul forum VB6 di MasterDrive.it,

ho provato la tua soluzione relativa al titolo in oggetto.
volevo sapere se è anche possibile intervenire sulla larghezza delle colonne e , magari, tipo di carattere ecc.

franco

# re: Come creare un foglio Excel senza avere Excel installato

Left by Pasquale at 12/03/2008 10:58
Gravatar ciao secondo voi c'è una minima possibilità di applicare la funzione trim
per i valori dei field che saranno inseriti nel foglio excel

# re: Come creare un foglio Excel senza avere Excel installato

Left by Carlo at 10/11/2008 20:48
Gravatar Ciao, ho utilizzato il tuo metodo, ma mi restituisce questo errore.

Il nome di schema specificato, "Excel 8.0;Database=C:\Documents and Settings\Carlo\Desktop\Ordine_10-11-2008.xls", non esiste oppure l'utente non è autorizzato a utilizzarlo.

Questo è il codice che uso...

Dim cmd As New SqlClient.SqlCommand(SqlCommand, m_conn)
Dim strFileName As String = ' Il percorso del file
Dim strSQL As String
strSQL = "SELECT * INTO [Excel 8.0;Database=" & strFileName & "].[Foglio1] FROM T_ItemOrdinati" '
cmd.ExecuteNonQuery(strSQL)

MI potresti dare una mano?
Grazie

# re: Come creare un foglio Excel senza avere Excel installato

Left by GIORGIO at 13/11/2008 13:43
Gravatar UP STESSO PROBLEMA

Ciao, ho utilizzato il tuo metodo, ma mi restituisce questo errore.

Il nome di schema specificato, "Excel 8.0;Database=C:\Documents and Settings\Carlo\Desktop\Ordine_10-11-2008.xls", non esiste oppure l'utente non è autorizzato a utilizzarlo.

Questo è il codice che uso...

Dim cmd As New SqlClient.SqlCommand(SqlCommand, m_conn)
Dim strFileName As String = ' Il percorso del file
Dim strSQL As String
strSQL = "SELECT * INTO [Excel 8.0;Database=" & strFileName & "].[Foglio1] FROM T_ItemOrdinati" '
cmd.ExecuteNonQuery(strSQL)

MI potresti dare una mano?
Grazie

# re: Come creare un foglio Excel senza avere Excel installato

Left by Luciano Bastianello at 13/11/2008 14:12
Gravatar Sono certo che funziona per cui il problema è relatovo alla tua configurazione.
Il programma fa uso di oledb e della normale "insert into"
1) Prova prima con il database northwind e le mie stesse esatte istruzioni.
2) Prova a creare il file in una cartella diversa

# re: Come creare un foglio Excel senza avere Excel installato

Left by Luciano Bastianello at 14/11/2008 18:38
Gravatar Per chi non lo sapesse ribadisco: questo suggerimento "funziona" solo con un database access che fa da ponte.

# re: Come creare un foglio Excel senza avere Excel installato

Left by uscite in bagno at 10/01/2009 01:39
Gravatar N

# re: Come creare un foglio Excel senza avere Excel installato

Left by angel at 21/02/2009 13:41
Gravatar vi prego aiutatemi mi servono 38 tabelle per lunedì e non so come fare!:(

# re: Come creare un foglio Excel senza avere Excel installato

Left by Andrea at 17/03/2010 15:30
Gravatar riesco a fare sia delle INSERT che delle UPDATE.
il mio problema nasce quando cerco di aggiornare una cella che
contiene dei numeri con altri numeri. in excel vengono riconosciuti
come testo, mettendovi un apice davanti.

qualche suggerimento?
grazie

# re: Come creare un foglio Excel senza avere Excel installato

Left by elisa at 12/06/2010 17:30
Gravatar BELLO

Your comment:





 
Please add 2 and 7 and type the answer here:

Copyright © Luciano Bastianello

Design by Bartosz Brzezinski

Design by Phil Haack Based On A Design By Bartosz Brzezinski