将表转换为excel

时间:2014-12-08 14:14:16

标签: c# asp.net sql-server excel

我想将表格中的所有记录写入excel文件。 我的桌子里有大约30000行。

我只能写20000行excel。 System out of memory异常发生后。

这是我的代码。提前谢谢。

using (SqlConnection con = new SqlConnection(strconnection))
{
   using (SqlCommand cmd = new SqlCommand("SELECT  * FROM tbl_ReportwithoutDup"))
   {
        using (SqlDataAdapter sda = new SqlDataAdapter())
        {
            cmd.Connection = con;
            sda.SelectCommand = cmd;
            using (DataTable dt = new DataTable())
            {
                sda.Fill(dt);
                using (XLWorkbook wb = new XLWorkbook())
                {
                    wb.Worksheets.Add(dt, "Report1");

                    Response.Clear();
                    Response.Buffer = true;
                    Response.Charset = "";
                    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                    Response.AddHeader("content-disposition", "attachment;filename=Report1.xlsx");
                    using (MemoryStream MyMemoryStream = new MemoryStream())
                    {
                        wb.SaveAs(MyMemoryStream);
                        MyMemoryStream.WriteTo(Response.OutputStream);
                        Response.Flush();
                        Response.End();
                    }
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

所以,不是一个完美的解决方案,但是由于您使用的是Web框架(asp.net),您可以随时将其全部写入HTML表格,然后将响应的内容类型设置为{ {1}}。结果是浏览器将下载默认情况下客户端在Excel中打开的CSV文件。