Exporter un gridview en fichier excel
Bonjour,
tout d'abord je tiens à préciser que j'ai trouvé des codes en C# et que j'ai réussi à en traduite la quasi totalité...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
//
// Code Behind
//
using System.Data.OleDb;
using System.IO;
public partial class Forms_WebImportExport : System.Web.UI.Page
{
public void fillGrid()
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("../xmlTest.xml"));
GridView1.DataSource = ds;
GridView1.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
fillGrid();
}
}
protected void btImport_Click(object sender, EventArgs e)
{
string conn = ("Provider=Microsoft.Jet.OLEDB.4.0;" + ("Data Source=C:\\path\\test.xls;" +
"Extended Properties=\"Excel 8.0;\"")); // or use instead of Excel 8.0 - Excel 5.0
string SSQL = "SELECT name , dept, salary from [sheet1$]";
OleDbDataAdapter oleDA = new OleDbDataAdapter(SSQL, conn); // here use oleDataReader
DataSet ds = new DataSet();
//oleDA.TableMappings.Add("Table","ExcelTest"); // Require
oleDA.Fill(ds);
GridView1.DataSource = ds.Tables[0].DefaultView; // or [ ds ]
GridView1.DataBind();
}
protected void btExport_Click(object sender, EventArgs e)
{
ExportGridToExcel(GridView1, "myExcel");
}
public void ExportGridToExcel(GridView grdGridView, string fileName)
{
Response.Clear();
Response.AddHeader("content-disposition",string.Format("attachment;filename={0}.xls",fileName));
Response.Charset = "";
Response.ContentType = "application/vnd.xls";
StringWriter stringWrite = new StringWriter();
HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
GridView1.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{
/* method must be implemented when using RenderControl */
}
} |
Après avoir tout transformé en vb.net
j'obtiens le code ci-après
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
Imports System.IO.StringWriter
Imports System.Web.UI.HtmlTextWriter
Partial Class bonDeCommande
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Response.Clear()
Response.AddHeader("content-disposition", "attachment;filename=FileName.xls")
Response.Charset = ""
Response.ContentType = "application/vnd.xls"
Dim stringwrite As New System.IO.StringWriter()
Dim htmlWrite As New HtmlTextWriter(stringwrite)
GridView1.RenderControl(htmlWrite)
Response.Write(stringwrite.ToString())
Response.End()
End Sub
Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
End Sub
End Class |
Le message d'erreur est le suivant : RegisterForEventValidation ne peut être appelé que pendant Render();
Il semble irrésolvable...
Merci pour vos réponses.
Cordialement,
Tid.