ciao,
io ti (ri)consiglio una lettura al link che ho postato sopra.
Magari con un esempio di codice il consiglio si "rafforza" ;)
fai l'import dei namespace oledb e sql
Imports System.Data.OleDb
Imports System.Data.SqlClient
poi nell'evento click del tuo pulsante leggi i dati da sqlserver e li scarichi in excel dopo aver creato un foglio di lavoro:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim conn As New SqlConnection("Data Source=tuoserver;Initial Catalog=tuatabella;User Id=********;Password=**************;")
Dim cmd As New SqlCommand("SELECT Id, Nome, Cognome FROM tuatabella", conn)
Dim connE As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\vlad\Documents\test.xls;Extended Properties='Excel 8.0;HDR=Yes';")
Dim cmdE As New OleDbCommand()
cmdE.Connection = connE
conn.Open()
connE.Open()
'qui crei un nuovo foglio di lavoro
cmdE.CommandText = "CREATE TABLE FoglioTest (Id integer, Nome char(255), Cognome char(255))"
cmdE.ExecuteNonQuery()
'prepari la query di inserimento
cmdE.CommandText = "INSERT INTO FoglioTest (Id, Nome, Cognome) values (?, ?, ?)"
cmdE.Parameters.Add("@Id", OleDbType.Integer)
cmdE.Parameters.Add("@Nome", OleDbType.Char)
cmdE.Parameters.Add("@Cognome", OleDbType.Char)
Dim dr As SqlDataReader = cmd.ExecuteReader
While dr.Read
'inserisci i dati riga dopo riga
cmdE.Parameters(0).Value = CInt(dr(0))
cmdE.Parameters(1).Value = dr(1).ToString
cmdE.Parameters(2).Value = dr(2).ToString
cmdE.ExecuteNonQuery()
End While
connE.Close()
conn.Close()
conn.Dispose()
connE.Dispose()
End Sub
Per scarsa fantasia ho chiamato connE e cmdE la connessione e il command per Excel. Cambia parametri e percorso del file excel e vedrai che funziona a meraviglia.
L'articolo mi pare molto completo e propone esempi di codice per far tutto quel che serve con un "database".
Ad esempio, se ti colleghi alla tabella che vuoi trasferire su excel con oledb (e non tramite SqlClient come ho fatto io) puoi riversare i dati in un colpo solo senza passare per il ciclo while che ho scritto sopra semplicemente con un comando INSERT ... INTO.
Dall'articolo:
cmd.CommandText = "INSERT INTO [EmployeeData$] IN 'C:\ExcelData1.xls' 'Excel 8.0;'" & _
"SELECT EmployeeID AS ID, FirstName AS Name, BirthDate FROM Employees"
cmd.ExecuteNonQuery()
bye,
vladi
p.s. - l'articolo che indichi tu è per vb6 non è rivolto alla tecnologia .net. Io ho preso per buono il titolo del thread e parlo di vb.net; se non fosse così tutto quanto ho scritto può essere tranquillamente cestinato
Modificato da vladimiro il 23 settembre 2008 00.41 -