16 messaggi dal 30 gennaio 2008
Questo codice prende i dati da una gridView e li downloada come file excel sul client. Funziona. il problema è la formattazione della colonna importo e di una colonna di codice cliente che viene esposta in excel come numero anzichè stringa.
Mi spiego:
nel gridView ho queste due colonne:

importo codice
1.234,00 00234
12.345,78 12567
689,00
- 527,89

Col Matt Berseth's code ottengo sil client un excel file with con questo risultato:
importo codice
1.234 234
12.345,78 12567
689
- 527,89

Se implemento il class code con una di queste righe:

****
row.Cells(5).Text = FormatCurrency(row.Cells(5).Text, 2)
row.Cells(5).Text = FormatNumber(row.Cells(5).Text, 2)
row.Cells(5).Text = CDbl(row.Cells(5).Text)

****
ottengo in debug l'errore: Cast non valido dalla stringa "- 527,89" al tipo 'Double'.

Se uso invece:
****
row.Cells(5).Text = Format(row.Cells(5).Text, "##,##0.00"),
****
si crea il file excel sul client ma la colonna importo risulta così: ##,##0.00

per la colonna codice, se inserisco la linea di codice:
****
row.Cells(5).Text = Str(row.Cells(5).Text)
****
ottengo l'errore: impossibile convertire l'argomento 'Number' in un valore numerico.
Se inserisco:
****
row.Cells(5).Text = row.Cells(5).Text.ToString
****
ottengo il foglio excel con i valori di colonna sempre mancanti degli zeri iniziali cioè 234 e non 00234.

Come posso mantenere la giusta formattazione dei dati ed ottenere un file excel corretto?
Ciao e grazie a chi vorrà darmi una mano...
Tappat

Public Shared Sub Export(ByVal fileName As String, ByVal gv As GridView)
HttpContext.Current.Response.Clear()
HttpContext.Current.Response.AddHeader("content-disposition", String.Format("attachment; filename={0}", fileName))
HttpContext.Current.Response.ContentType = "application/ms-excel"
Dim sw As StringWriter = New StringWriter
Dim htw As HtmlTextWriter = New HtmlTextWriter(sw)
Dim table As Table = New Table
table.GridLines = gv.GridLines
If (Not (gv.HeaderRow) Is Nothing) Then
GridViewExport.PrepareControlForExport(gv.HeaderRow)
table.Rows.Add(gv.HeaderRow)
End If
For Each row As GridViewRow In gv.Rows
GridViewExport.PrepareControlForExport(row)
°°°°
ho aggiunto qui le righe per la formattazione
°°°°
table.Rows.Add(row)
Next
If (Not (gv.FooterRow) Is Nothing) Then
GridViewExport.PrepareControlForExport(gv.FooterRow)
table.Rows.Add(gv.FooterRow)
End If
table.RenderControl(htw)
HttpContext.Current.Response.Write(sw.ToString)
HttpContext.Current.Response.End()
End Sub

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.