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?

InformationsquelleAutor Sai | 2014-08-06