Export-gridview-Daten zu xlsx-format?
Ich habe eine große gridview als Teil einer web-Anwendung, die eine Kombination von gebundenen Feldern und Vorlage Felder und hat DataFormatStrings definiert, die definieren, wie die Werte dargestellt werden, die auf die Zellen. Ich habe eine harte Zeit, die Umwandlung aller dieser zu einer datatable, so dass ich schreiben Sie zu einem excel-sheet.
Umwandlung des gridview-Steuerelements direkt in excel zwingt mich die Verwendung von String zu Schreiben und in Html Schreiben, die produzieren nur .xls-format. Wir sind auf der Suche, das die Vereinheitlichung aller excel-download-Optionen auf der .xlsx-format. Hier ist, was ich bisher ausprobiert
dt = gvInvoicesEX.DataSource as DataTable;
Die DataSource-Eigenschaft gibt null zurück, aus irgendeinem Grund. Ich habe auch versucht, die normale loop-in-loop Technik gehen über jeder Zelle in gridview und kopieren Sie es auf die datatable-aber ich bekomme nur eine datatable voll von leeren Zellen.
for (int i = 0; i < gvInvoicesEX.Rows.Count; i++)
{
DataRow dr = dt.NewRow();
for (int j = 1; j < gvInvoicesEX.Columns.Count; j++)
{
gvInvoicesEX.Rows[i].Cells[j].Attributes.Add("class", "text");
dr[j - 1] = gvInvoicesEX.Rows[i].Cells[j].Text;
}
dt.Rows.Add(dr);
}
Das folgende ist meine excel-Konvertierung-code:
using (var wb = new XLWorkbook())
{
DataTable dt = GetDataTableFromGridView();
string fileName = "BillingDetail" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
wb.Worksheets.Add(dt);
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=" + fileName);
using (var ms = new System.IO.MemoryStream())
{
wb.SaveAs(ms);
ms.WriteTo(Response.OutputStream);
ms.Close();
}
Response.End();
}
Gibt es irgendetwas, was ich ändern kann, die in einer der oben genannten, um dies alles reibungslos funktioniert?
InformationsquelleAutor Sai | 2014-08-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie wirklich verarbeiten die Daten direkt von der Quelle, die feeds in Ihrem gridview, anstatt zu versuchen zu verarbeiten, die Daten im gridview-Steuerelement, und kopieren Sie es wieder heraus. Gridview verwendet reflektion und viel wirklich hohe overhead-Prozesse, also durch die Iteration und die Formatierung direkt von Ihrer Datenquelle, überspringen Sie eine Menge Aufwand und beschleunigen Sie Ihren workflow ein wenig Recht.
Also mit der Methode, die Sie verwenden, um das laden von Daten in der gridview, ob Sie eine gespeicherte Prozedur aufrufen oder was auch immer, laden Sie die Daten in eine Liste mit stark typisierten Objekten und Durchlaufen Sie diese für die Erstellung Ihrer excel-Tabelle.
Ich würde auch dringend raten, es sei denn, Sie sind mit komplexen Formeln oder ähnliches in Ihrem Blatt, zu erlauben, standardisierte downloads als
.csv
. Excel wird leicht gelesen, dass format, und es ist viel mehr öffnen und einfach, mit zu arbeiten, anstatt mit.xlsx
Treiber.Ok, in diesem Fall benutzen Sie die gleiche Datenquelle für Ihre excel-wie Sie für die Erstellung des gridview und Ihr Leben sollte viel einfacher sein.
InformationsquelleAutor Kenneth Posey
Gridview-Export in XLSX:-
Iam mit der Bibliothek benannt EPPlus.dll für den export .. Nur der download EPPlus.dll aus dem link http://epplus.codeplex.com/ und finden Sie den namespace als
using OfficeOpenXml;
in Ihrem Projekt.Schaltfläche Exportieren:-
Export-Code:-
Referenzen:-
InformationsquelleAutor Krishna
Hier ist, wie ich es auf einen button zu exportieren klicken Sie, meine gridview zu xslx-format. Keine Notwendigkeit zu Holen, von datasource wieder. Nur Durchlaufen Ihre gridview wie
Bitte die
System.IO
Namespaces in Ihrem code.NÖ. Haben Sie excel 2010 auf Ihrem Rechner installiert? Dies funktioniert gut auf meinem Rechner.
Nein, ich habe nur 2007 installiert.
Dies funktioniert bei mir mit Office Standard 2010. Vielleicht ist die Antwort.ContentType ist für office 2007.
InformationsquelleAutor Zo Has