4 messaggi dal 09 gennaio 2008
Ciao,
ho un problema, devo creare un file Excel popolato da una datatable e poter fare successivamente il download,tutto questo da un'applicazione web realizzata in asp.net e c#
Ora nel seguente codice riesco a creare il file e a salvarlo in locale poi accade una cosa che non so spiegarmi...mi fa il download del file ricavato dalla datatable ma successivamente me lo sovrascrive con un file excel che contiene la home page della mia applicazione.



object oMissing = System.Reflection.Missing.Value;
ApplicationClass ap = new ApplicationClass();
Workbook wbk = (Workbook)ap.Workbooks.Add(oMissing);
Worksheet sht = (Worksheet)wbk.Sheets[1];
for (int i = 0; i < tabella.Rows.Count; i++)
{
for (int j = 0; j < tabella.Columns.Count; j++)
{
Range range = (Range)sht.Cells[i + 1, j + 1];
range.Value2 = tabella.Rows[i][j].ToString();
}
}
ap.DisplayAlerts = false;
ap.Workbooks[1].SaveAS(filePath1, oMissing, oMissing, oMissing, oMissing, oMissing, XlSaveAsAccessMode.xlNoChange,
oMissing, oMissing, oMissing, oMissing, oMissing);

Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "attachment; filename= " + filePath1);
Response.WriteFile(tabella.ToString());
conn.Close();
ap.Quit();
Response.End();

Qualcuno può aiutarmi!????
Grazieeee

nuvola
575 messaggi dal 23 giugno 2003
www.padovaboy.it
Ciao,
non so risolvere direttamente il tuo problema ma ti consiglio di guardare quest'articolo:
http://mattberseth.com/blog/2007/04/export_gridview_to_excel_1.html
ti spiega come esportare in excel una gridview, senza dover scomodare il pacchetto office.

Tra l'altro come esegui tu il processo, dimentichi (mi pare) di richiamare i vari dispose (se non erro e ricordo bene, questo tipo di approccio è piuttosto oneroso e rischioso in termini di liberazione delle risorse).

In più come lo fai te ha poco senso perché imposti tutto come se fossero stringhe, il vantaggio di creare un file excel in maniera programmatica sarebbe quello di impostare particolari proprietà o stili alle celle (I suppouse)...

Spero di essere stato utile ;)

www.padovaboy.it dal 2001 con furore :D
4 messaggi dal 09 gennaio 2008
Ciao a tutti!!
Sono riuscia a creare il file Excel ottenendo il risultato da una datatable...ma adesso desidero inserire come intestazione del file anche i campi della tabella.
Sono riuscia a creare una nuova riga ma per il momento è vuota...sapete dirmi come posso fare per prendere i nomi dei campi o eventualemnte anche come inserirli a mano?

invio il mio pezzo di codice:


//crea un nuovo comando
OracleCommand cmd = new OracleCommand("SELECT * "+" FROM "+"zic_prova", conn);

//Crea dataadapter
OracleDataAdapter dasel=new OracleDataAdapter();
cmd.CommandType=CommandType.Text;
OracleDataReader dr = cmd.ExecuteReader();

dasel.SelectCommand = cmd;
System.Data.DataTable temp = new System.Data.DataTable();
DataRow row = temp.NewRow();

DataColumn column0 = new DataColumn();
column0.ColumnName = "cod_prova";
cmd.Parameters.Add("cod_prova", OracleType.VarChar, 250).Value = column0.ColumnName;
column0.ColumnName.Insert(1,"cod_prova");
column0.ColumnName.ToString();

DataColumn column1 = new DataColumn();
column1.DataType = System.Type.GetType("System.String");
column1.ColumnName = "desc_prova";

DataColumn column2 = new DataColumn();
column2.ColumnName = "ip_upload";

temp.Rows.InsertAt(row, 1);

dasel.Fill(temp);
tabella=temp;


grazie!!!
nuvola!!
il metodo più semplice consiste nell'usare row[0] = "Campo1" (e continuando così...) prima di fare dataTable.Rows.Add(row).

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
4 messaggi dal 09 gennaio 2008
Sono riuscita!


Grazie!!!!!!!!!!!!!!!!!!!!
122 messaggi dal 15 gennaio 2008
io ho invece bisogno di un aiutino diverso

con il metodo postato in http://mattberseth.com/blog/2007/04/export_gridview_to_excel_1.html

riesco a esportare tutto correttamente, ma dato che nel mio gridview le prime due colonne sono due templatefield che NON contengono dati ma due gif, quando esporto il file excel, le prime due colonne mi risultano vuote.

como posso fare per decidere quali colonne del gridview esportare o meno?
yield wrote:
riesco a esportare tutto correttamente, ma dato che nel mio gridview le prime due colonne sono due templatefield che NON contengono dati ma due gif, quando esporto il file excel, le prime due colonne mi risultano vuote.

perchè

como posso fare per decidere quali colonne del gridview esportare o meno?

nascondendole prima del rendering. i controlli di questo tipo hanno una collection Columns, a cui accedi tramite un indice e che consente di nascondere la stessa, rimuovendola dalla collection o impostandone la visibilità su false.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
122 messaggi dal 15 gennaio 2008
Daniele Bochicchio ha scritto:
nascondendole prima del rendering.


forse faccio una domanda banale ma:

il gridview è già statop renderizzato quando esporto in excel. l'esportazione dei dati in excel avviene quando premo un imagebutton nella pagina, quindi il gridview è già a video con le due colonne di cui sopra...

c'è un modo per rirenderizzare il gv nel codice subito prima di esportare i dati?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.