J'ai 2 blocs de code, si quelqu'un pouvait m'aider à les assembler, j'aurais la fonctionnalité que je recherche. Le premier bloc de code télécharge un gridview pour exceller en utilisant la boîte de dialogue de téléchargement Je cherche:Création d'un rapport Excel créé dynamiquement Téléchargeable
Public Overloads Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
' Verifies that the control is rendered
End Sub
Private Sub ExportToExcel(ByVal filename As String, ByVal gv As GridView, ByVal numOfCol As Integer)
Response.Clear()
Response.Buffer = True
Response.AddHeader("content-disposition", String.Format("attachment; filename={0}", filename))
Response.Charset = ""
Response.ContentType = "application/vnd.ms-excel"
Dim sw As New StringWriter()
Dim hw As New HtmlTextWriter(sw)
gv.AllowPaging = False
gv.DataBind()
'Change the Header Row back to white color
gv.HeaderRow.Style.Add("background-color", "#FFFFFF")
For i As Integer = 0 To numOfCol - 1
gv.HeaderRow.Cells(i).Style.Add("background-color", "blue")
gv.HeaderRow.Cells(i).Style.Add("color", "#FFFFFF")
Next
For i As Integer = 0 To gv.Rows.Count - 1
Dim row As GridViewRow = gv.Rows(i)
'Change Color back to white
row.BackColor = System.Drawing.Color.White
For j As Integer = 0 To numOfCol - 1
row.Cells(j).Style.Add("text-align", "center")
Next
'Apply text style to each Row
row.Attributes.Add("class", "textmode")
'Apply style to Individual Cells of Alternating Row
If i Mod 2 <> 0 Then
For j As Integer = 0 To numOfCol - 1
row.Cells(j).Style.Add("background-color", "#CCFFFF")
row.Cells(j).Style.Add("text-align", "center")
'#C2D69B
'row.Cells(j).Style.Add("font-size", "12pt")
Next
End If
Next
gv.RenderControl(hw)
'style to format numbers to string
Dim style As String = "<style> .textmode { mso-number-format:\@; } </style>"
Response.Write(style)
Response.Output.Write(sw.ToString())
Response.Flush()
Response.End()
End Sub
Le deuxième bloc de code est un exemple de rapport que je suis souhaite télécharger. Donc, au lieu de télécharger un gridview, je veux que cette fonction accepte un objet de feuille de calcul.
Commentaire aux suggestions de Frank ... Merci pour votre aide, cela fonctionne presque pour moi. Le problème est le plantage de code si je n'ai pas un fichier factice appelé test.xls dans mon dossier racine. Et quand je l'ai mis là, il charge ensuite 2 cahiers d'exercices test.xls [1] et le livre 2 qui test.xls est un classeur vide et le livre 2 est le rapport dymanically créé correct. Je ne veux pas enregistrer ce fichier dans le dossier eroot si je n'ai pas trop, je veux que les utilisateurs s'ouvrent simplement de le télécharger à leur client. Le code im en utilisant après la création woorkbook est ... Dim fn As String = "RptCrd_" & "PAQUET" & ".xls" Dim EIO As String = "~/ContentDisposition /" & fn
Dim exData As Byte() = File.ReadAllBytes(Server.MapPath(eio))
Response.AddHeader("content-disposition", String.Format("attachment; filename={0}", fn))
Response.ContentType = "application/x-msexcel"
Response.BinaryWrite(exData)
Response.Flush()
Response.End()
releaseObject(xlApp)
releaseObject(xlWorkBook)
J'ai besoin de la fonction d'accepter un objet classeur pas une feuille de calcul au lieu d'un gridview –
Peut-être que je ne comprends pas votre question. Je pensais que vous voulez envoyer les données à Excel. C'est ce qui m'a conduit dans le chemin de l'en-tête de réponse. –
J'utilisais simplement une feuille de calcul enregistrée comme test pour montrer comment formuler un en-tête de réponse que le navigateur interpréterait comme une feuille de calcul MS Excel. –