Salve.
Dovrei esportare il contenuto di una GridView di una pagina aspx in un foglio di Excel. In sostanza si tratta di un calendario lezioni per una scuola, che contiene tutte le lezioni che ci sono in una settimana. La mia esigenza è di mettere un'interruzione di pagina prima del giovedi, in modo che ci siano 3 giorni su una pagina e 3 su un'altra. Questo è il metodo che utilizzo per esportare:
Non utilizzo le Interop di Excel perchè questo sito finirà sull'hosting di Aruba, già esistente, che non è dedicato e non vi è installato Office.codice:Response.Clear() Response.Buffer = True Response.ContentType = "application/vnd.ms-excel" Response.Charset = "" Me.EnableViewState = False Dim oStringWriter As New System.IO.StringWriter Dim oHtmlTextWriter As New System.Web.UI.HtmlTextWriter(oStringWriter) Dim GridViewD As New GridView GridViewD = dg 'Dove dg è la GridView che viene dalla pagina ... 'Qui il codice vario per formattare ... GridViewD.RenderControl(oHtmlTextWriter) Dim stringa As String = oStringWriter.ToString() Response.Write(stringa) Response.[End]()
Sono più o meno riuscito comunque a formattare il foglio in modo soddisfacente ma l'unica cosa rimasta in sospeso è appunto l'interruzione. Avendo colonne fisse, ho inserito questo codice nel punto giusto:
ma non ha funzionato e mi spiego meglio.codice:If GridViewD.Rows(i).Cells(1).Text.StartsWith("Giovedi ") Then GridViewD.Rows(i).Style.Add("page-break-before", "always") End If
Se io metto un break point prima del Response.Write e guardo cosa c'è in "stringa", noto che l'attributo CSS page-break-before è correttamente presente nel tag TR della riga dove c'è Giovedi. Se io copio il contenuto di "stringa" e lo incollo in notepad salvandolo poi come pagina HTM, aprendola da browser e andando su anteprima di stampa, l'interruzione è presente e corretta.
Se invece lascio che generi il file XLS, mi apre Excel, vado in anteprima di stampa e l'interruzione è sparita. Se poi salvo come HTM il file XLS appena creato, vedo che nel codice HTML page-break-before è effettivamente scomparso.
Mi viene quindi il sospetto che Excel elabori il codice HTML un po' a modo suo...
Ho cercato molto anche in internet ma non ho trovato altro al momento. Ringrazio in anticipo chi vorrà darmi una dritta.

Rispondi quotando