Esportare tabella sql server in file excel

mercoledì 01 giugno 2011 - 14.57

mauri1961 Profilo | Senior Member

Vorrei creare un foglio excel da una pagina asp.net contenente dati selezionati di una tabella sqlserver. Qual'è il sistema più veloce ?

Grazie, Maurizio

Gluck74 Profilo | Guru

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.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5