L'exportation gridview données au format xlsx?
J'ai un gros gridview dans le cadre d'une application web qui a une combinaison de lie des champs et des champs de modèle et a DataFormatStrings défini qui définissent la façon dont les valeurs sont représentées sur les cellules. Je vais avoir un moment difficile la conversion de tout cela à un datatable pour que je puisse les écrire sur une feuille excel.
La conversion de la gridview directement à excel qui m'oblige à utiliser des chaînes de caractères à Écrire et Html Écriture qui produisent uniquement de l' .xls. Nous sommes à la recherche à la standardisation de tous les excel options de téléchargement pour la .format xlsx. Voici ce que j'ai essayé jusqu'à présent
dt = gvInvoicesEX.DataSource as DataTable;
La propriété DataSource renvoie la valeur null pour une raison quelconque. J'ai aussi essayé la normale de la boucle à l'intérieur de la boucle de technique pour aller au-dessus de chaque cellule dans le contrôle gridview et le copier dans le datatable mais je viens d'obtenir un datatable plein de cellules vides.
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);
}
Ce qui suit est mon excel conversion de 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();
}
Est-ce que je peux changer dans l'un des ci-dessus pour faire tout cela fonctionne bien?
Vous devez vous connecter pour publier un commentaire.
Vous devriez vraiment traiter les données directement à partir de votre source qui alimente votre gridview, plutôt que d'essayer de traiter les données à l'intérieur de la gridview et copie à revenir. Gridview utilise la réflexion et beaucoup de vraiment généraux élevés processus, de sorte que par l'itération et de la mise en forme directement à partir de votre source de données, vous passez beaucoup de généraux et d'accélérer votre flux de travail tout à fait un peu.
Donc, avec la méthode que vous utilisez pour charger les données dans le contrôle gridview, si c'est l'appel d'une procédure stockée ou que ce soit, vous devez charger les données dans une liste d'objets fortement typés et itérer sur ceux de la production de votre feuille excel.
Je voudrais également fortement conseiller, sauf si vous êtes l'aide de formules complexes ou similaires dans votre feuille, à juste permettre normalisé téléchargements
.csv
. Excel facilement lire ce format, et il est beaucoup plus ouvert et facile à travailler avec, plutôt que d'utiliser.xlsx
pilotes.Gridview Exportation au format XLSX:-
Iam à l'aide de la bibliothèque nommée EPPlus.dll pour l'exportation. il suffit de télécharger l'EPPlus.dll à partir du lien http://epplus.codeplex.com/ et reportez-vous à l'espace de noms comme
using OfficeOpenXml;
dans votre projet.Bouton D'Exportation:-
Code D'Exportation:-
Références:-
Voici comment je l'ai fait sur un bouton, cliquez sur exporter mon gridview pour xslx format. Pas besoin de chercher à partir de la source de données à nouveau. Viens de parcourir votre gridview comme
Veuillez inclure le
System.IO
espace de noms dans votre code.