esportare in Excel
-
22-08-2019 - |
Domanda
Vorrei esportare un GridView per eccellere, che è abbastanza facile. Ma soprattutto la griglia, in Excel, vorrei qualche altra informazione per l'identificazione. Posso in qualche modo esportare le cose diverse da GridView mentre poi mettere in GridView qui sotto?
Modifica Per qualche ragione, quando la GridView1 è visibile e si tenta di esportare, l'intero esportazioni di pagina e non solo il GridView. Non so perché!
Protected Sub btnExport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExport.Click
'Create a StringWriter and HtmlTextWriter
Dim sw As System.IO.StringWriter = New System.IO.StringWriter()
Dim htw As New System.Web.UI.HtmlTextWriter(sw)
'Clear the Response object's content and specify the header for the HTML response and type of application file to create
Response.ClearContent()
Response.AddHeader("content-disposition", "attachment; filename=SaveFile.xls")
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = ""
EnableViewState = False
htw.WriteLine("Test, test, test")
Try
'Check for the number of GridView rows
If GridView1.Rows.Count < 65535 Then
'Turn sorting and paging off and rebind the GridView control
GridView1.AllowSorting = False
GridView1.AllowPaging = False
GridView1.PageSize = GridView1.Rows.Count
GridView1.AutoGenerateSelectButton() = False
GridView1.DataBind()
'Render the GridView1 as HTML - this will cause an error that will fire the VerifyRenderingInServerForm event -- this event is trapped by the Overriding sub procedure given at the end of the program listing
GridView1.RenderControl(htw)
'Write the response
Response.Write(sw.ToString())
Response.End()
'Turn sorting and paging on and rebind the GridView control
GridView1.AllowSorting = True
GridView1.AllowPaging = True
'.GridView1.PageSize = 10
GridView1.AutoGenerateSelectButton() = True
GridView1.DataBind()
End If
Catch ex As Exception
End Try
End Sub
Soluzione
Sì, è possibile.
fare qualcosa di simile:
HttpContext.Current.Response.Write("some string value")
prima di passare il GridView.
Altri suggerimenti
Se si desidera esportare i tuoi contenuti per ExcelML controllare il RadGrid da Telerik
È anche possibile inserire informazioni di intestazione nella rete etc
Ecco il mio codice per fare lo stesso
protected void ExportExcel_OnClick(object sender, EventArgs e) { Response.Clear(); Response.AddHeader("content-disposition", "attachment;filename=brugere.xls"); Response.Charset = "windows-1252"; Response.ContentType = "application/vnd.xls"; using (StringWriter stringWrite = new StringWriter()) using (HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite)) { GridView1.AllowPaging = false; GridView1.DataBind(); GridView1.RenderControl(htmlWrite); string html = stringWrite.ToString(); string result = Replacer.Replace(html, ""); Response.Write(result); } Response.End(); }
Si noti che im tagliare l'HTML risultante utilizzando un'espressione regolare per evitare la formattazione, le immagini, div e whatnots.
static readonly Regex Replacer = new Regex("(<input[^<>]*>)|"+ "(class=\"[^\"]*\")|(style=\"[^\"]*\")|"+ "(<a[^]*>)|(</a>)|(<div>)|(</div>)|" + "(cellspacing=\"[^\"]*\")|(cellpadding=\"[^\"]*\")|" + "(id=\"[^\"]*\")|(border=\"[^\"]*\")", RegexOptions.IgnoreCase);
Ricordate di ignorare quanto segue al fine di garantire quella griglia renderà al di fuori di una pagina
public override void VerifyRenderingInServerForm(Control control) { return; }
L'apertura di questo file in Excel genera un messaggio di avviso. Vorrei usare una delle librerie di esportazione open-source come NPOI. http://npoi.codeplex.com/
Se ancora preferisce utilizzare l'output HTML, si può considerare il download di documentazione Microsoft sul formato HTML per Office da questo link: http://msdn.microsoft.com/en-us /library/aa155477%28office.10%29.aspx
È necessario solo il file CHM da questo archivio (confezionati in EXE).
In bocca al lupo.
Se il GridView è riempito utilizzando i dati di un DataTable, DataSet o List <> quindi la seguente libreria vi permetterà di esportare a un Excel 2007 (.xlsx) file semplicemente chiamando uno " CreateExcelDocument "funzione.
// Step 1: Create a DataSet, and put some sample data in it
DataSet ds = CreateSampleData();
// Step 2: Create the Excel .xlsx file
try
{
string excelFilename = "C:\\Sample.xlsx";
CreateExcelFile.CreateExcelDocument(ds, excelFilename);
}
catch (Exception ex)
{
MessageBox.Show("Couldn't create Excel file.\r\nException: " + ex.Message);
return;
}
viene fornito il codice sorgente completo, così si potrebbe adattare, per aggiungere le righe in più di dati, nella parte superiore di uno o più fogli di lavoro.
Questa libreria utilizza il Open XML le librerie, quindi è completamente gratuito. http://www.mikesknowledgebase.com/pages/CSharp/ExportToExcel.htm