Utilizzando EPPlus, sto cercando di esportare un gridview di un Foglio di Excel

Excel mi dice che c’è illeggibile dati, e così dopo dico per cercare di recuperare le informazioni, mostra i dati corretti. Quando ho aperto il file di testo della xlsx, però, ho tutto il codice html per la pagina intera, invece che solo il gridview (che probabilmente è il contenuto illeggibile Excel sta parlando).

Ecco il mio codice:

public void ExcelDownload(object sender, EventArgs e)
    {
        DataSet _MailingListUsers = db.GetMailingList();
        DataTable mailTable = _MailingListUsers.Tables[0];

        DumpExcel(mailTable);

    }

    private void DumpExcel(DataTable tbl)
    {
        using (ExcelPackage pck = new ExcelPackage())
        {
            //Create the worksheet
            ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Mailing List");

            //Load the datatable into the sheet, starting from cell A1. Print the column names on row 1
            ws.Cells["A2"].LoadFromDataTable(tbl, false);

            //Header Titles
            ws.Cells["A1"].Value = "Employee Name";
            ws.Cells["B1"].Value = "Email Address";
            ws.Cells["C1"].Value = "Phone";
            ws.Cells["D1"].Value = "Business Unit";
            ws.Cells["E1"].Value = "Site";

            ws.Cells["A1"].AutoFitColumns();

            //Format the header for column 1-3
            using (ExcelRange rng = ws.Cells["A1:E1"])
            {
                rng.Style.Font.Bold = true;
                //Set Pattern for the background to Solid
                rng.Style.Fill.PatternType = ExcelFillStyle.Solid;    
                //Set color to dark blue
                rng.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.FromArgb(79, 129, 189));  
                rng.Style.Font.Color.SetColor(System.Drawing.Color.White);
            }


            //Write it back to the client
            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            Response.AddHeader("content-disposition", "attachment;  filename=MailingList.xlsx");
            Response.BinaryWrite(pck.GetAsByteArray());
        }
    }

Le idee su ciò che potrebbe accadere? Qualcuno ha suggerito di utilizzare EPPlus dopo ho avuto gli stessi problemi tentando di inviare dati HTML Excel, ed è stato l’invio di tutta la pagina, invece di gridView.

Grazie

OriginaleL’autore shawleigh17 | 2012-03-05

One Reply
  1. 9

    Mi manca il Risposta.Clear() e il Risposta.Fine():

    try {
        var pck = new OfficeOpenXml.ExcelPackage();
        var ws = pck.Workbook.Worksheets.Add("Mailing List");
        ws.Cells["A2"].LoadFromDataTable(tbl, false);
        Response.Clear();
        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        Response.AddHeader("content-disposition", "attachment;  filename=MailingList.xlsx");
        Response.BinaryWrite(pck.GetAsByteArray());
    } catch (Exception ex) {
        //log error
    }
    Response.End();
    Grande! Che ha funzionato! Grazie.
    Soluzione migliore………………………………………………….!!! 😀
    Voglio solo sottolineare che la linea 4, che dovrebbe essere simile a questo: ws.Cellule[“A2”].LoadFromDataTable(tbl, false);
    Potreste per favore aiutarmi qui: stackoverflow.com/questions/27827277/…

    OriginaleL’autore Rango

Lascia un commento