Ciao,
puoi trovare diversi post su questo forum, che parlano proprio di questo argomento. Comunque rinfreschiamoci le idee.
Premesso che diamo per scontata la lettura dei dati dal database, ammettiamo che la tabella in questione sia presente in un DataTable chiamato MyDataTable.
Apriamo prima di tutto la connessione al file excel esistente (se non esiste lo creiamo):
// Excel 97-2003
strDownloadFileName = "~/DownloadFiles/" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
strExcelConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ Server.MapPath(strDownloadFileName)
+ ";Extended Properties='Excel 8.0;HDR=Yes'";
// Excel 2007
strDownloadFileName = "~/DownloadFiles/" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
strExcelConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
+ Server.MapPath(strDownloadFileName)
+ ";Extended Properties='Excel 12.0 Xml;HDR=Yes'";
A questo punto, usando una connessione OLEDB, carichiamo di tati della DataTable:
using (OleDbConnection conn = new OleDbConnection(strExcelConn))
{
// Create a new sheet in the Excel spreadsheet.
OleDbCommand cmd = new OleDbCommand(@"create table MyTableName
(PrimoCampo varchar(50), SecondoCampo varchar(50),... ... ...)", conn);
// Open the connection.
conn.Open();
// Execute the OleDbCommand.
cmd.ExecuteNonQuery();
cmd.CommandText = @"INSERT INTO MyTableName
(PrimoCampo, SecondoCampo, ... ...)
values (?,?, ... ...)";
// Add the parameters.
cmd.Parameters.Add("PrimoCampo", OleDbType.VarChar, 50, "PrimoCampo");
cmd.Parameters.Add("SecondoCampo", OleDbType.VarChar, 50, "SecondoCampo");
... ...
// Initialize an OleDBDataAdapter object.
OleDbDataAdapter da = new OleDbDataAdapter("select * from MyTableName", conn);
// Set the InsertCommand of OleDbDataAdapter,
// which is used to insert data.
da.InsertCommand = cmd;
// Changes the Rowstate()of each DataRow to Added,
// so that OleDbDataAdapter will insert the rows.
foreach (DataRow dr in MyDataTable.Rows)
{
dr.SetAdded();
}
// Insert the data into the Excel spreadsheet.
da.Update(MyDataTable);
}
A questo punto hai il tuo file pronto da scaricare
Ciao
____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.