Jag försöker skapa en excel-fil från ett dataset, och jag vill göra det med OleDbConnection för att få en binär excel-fil.CSV-fil till Excel med OleDbConnection
Om jag först skapar en tabell i Access och fyller på med datan från datasetet, kan jag sedan göra så här:
Dim conn as OleDbConnection
Dim command As OleDbCommand
Dim sql as String
conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Accessdatabas.mdb;User Id=admin;Password=;")
conn.Open()
sql = "SELECT * INTO ['Excel 8.0;Database=excelfil.xls'].[Tabellnamn] FROM [Tabellnamn]"
command = New OleDbCommand(sql, conn)
command.ExecuteNonQuery()
Men då måste jag ha en mdb-fil tillgänglig. Därför tänkte jag göra samma sak, men med en csv-fil.
Jag skapar en semikolonseparerad fil med datan från datasetet och gör sedan så här:
(Filen heter Tabellnamn.csv och ligger i mappen txt.)
conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=txt;Extended Properties=""text;HDR=YES;FMT=Delimited""")
conn.open()
sql = "SELECT * INTO ['Excel 8.0;Database=excelfil.xls'].[Tabellnamn] FROM [Tabellnamn.csv]"
command = New OleDbCommand(sql, conn)
command.ExecuteNonQuery()
Jag föjande fel: "Frågan måste ha en tabell eller fråga som indata."
Det fungerar att göra en vanlig Select mot csv-filen, så kopplingen verkar fungera.
Det går också att skapa en ny csv-fil genom:
SELECT * INTO [NyTabell.csv] FROM [Tabellnamn.csv]
Någon som vet vad som är fel, eller har något bättre förslag hur man kan skapa en excelfil från ett dataset.
Dvs en excelfil som inte är baserad på xml. Och utan att behöva en instans av Excel.
/Jesper