簡體   English   中英

將ASP網格數據導出到Excel

[英]Exporting asp grid data to excel

我想將網格數據直接導出到Excel。

我嘗試了“ HtmlTextWriter”,它允許我下載文件。 但是下載后我無法打開文件(Excel拋出錯誤,表明文件格式不正確。)

我搜索后發現,我需要首先創建一個XML文件,然后可以將其導出到Excel。 是這樣嗎?

還是我需要先將該文件保存在服務器上然后下載?

或者,如果我可以使用任何NuGet包(如ClosedXML或其他任何包)會有所幫助。

嘗試以下代碼單擊按鈕

protected void btn_excel_Click(object sender, ImageClickEventArgs e)
{
    try
    {

        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls");
        Response.Charset = "";
        Response.ContentType = "application/vnd.ms-excel";
        using (StringWriter sw = new StringWriter())
        {
            HtmlTextWriter hw = new HtmlTextWriter(sw);

            //To Export all pages
            GridView2.AllowPaging = false;
            work();   // in this function you can bind GridView2

            GridView2.HeaderRow.BackColor = Color.White;
            foreach (TableCell cell in GridView2.HeaderRow.Cells)
            {
                cell.BackColor = GridView2.HeaderStyle.BackColor;
            }
            foreach (GridViewRow row in GridView2.Rows)
            {
                row.BackColor = Color.White;
                foreach (TableCell cell in row.Cells)
                {
                    if (row.RowIndex % 2 == 0)
                    {
                        cell.BackColor = GridView2.AlternatingRowStyle.BackColor;
                    }
                    else
                    {
                        cell.BackColor = GridView2.RowStyle.BackColor;
                    }
                    cell.CssClass = "textmode";
                }
            }

            GridView2.RenderControl(hw);

            //style to format numbers to string
            string style = @"<style> .textmode { } </style>";
            Response.Write(style);
            Response.Output.Write(sw.ToString());
            Response.Flush();
            Response.End();
        }
    }
    catch (Exception ex)
    {

    }

}

最簡單的方法是從Nuget中獲取ClosedXML,然后將要導出的數據導出到數據表中,然后在下面使用此代碼

XLWorkbook wb = new XLWorkbook();
DataTable dt = GetDataTableOrWhatever();
wb.Worksheets.Add(dt,"WorksheetName");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM