导出到excel而不使用第三方DLL

时间:2018-02-05 21:23:58

标签: c# asp.net

无论如何使用.Net framework 4.5或更高版本导出到excel而不使用任何第三方dll?

2 个答案:

答案 0 :(得分:0)

有三种使用Office文件的方法:

如果您只需要新格式(.xlsx): OpenXML SDK。或ZipArchieve和XML编写器类。

旧的和新的格式:(t)生锈的办公室COM互操作。虽然这确实支持旧格式和新格式,但它有局限性。它需要办公室,需要在所有正常的COM互操作问题之上进行交互式会话。它通常不适用于网页

OleDB数据提供者:我最近才被告知他们。显然,新的甚至支持新的办公室格式。

我个人的意思是始终使用OpenXML SDK。

答案 1 :(得分:0)

试试此代码,

    public static void ExportToExcel(string fileName, string query)
    {
        try
        {
            using (MySqlCommand cmd = new MySqlCommand(query))
            {

                using (DataTable dt = GetData(cmd))
                {
                    GridView GridView2 = new GridView();
                    GridView2.AllowPaging = false;
                    GridView2.DataSource = dt;
                    GridView2.DataBind();

                    System.Web.HttpContext.Current.Response.Clear();
                    System.Web.HttpContext.Current.Response.Buffer = true;
                    System.Web.HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment;filename={0}.xls", fileName));
                    System.Web.HttpContext.Current.Response.Charset = "HEllo";
                    System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
                    StringWriter sw = new StringWriter();
                    HtmlTextWriter hw = new HtmlTextWriter(sw);

                    for (int i = 0; i <= GridView2.Rows.Count - 1; i++)
                    {
                        //Apply text style to each Row
                        GridView2.Rows[i].Attributes.Add("class", "textmode");
                    }

                    GridView2.RenderControl(hw);
                    System.Web.HttpContext.Current.Response.Output.Write(sw.ToString());
                    System.Web.HttpContext.Current.Response.Flush();
                    System.Web.HttpContext.Current.Response.End();
                }
            }
         }

        catch (Exception ex)
        {
            WebMsgBox.Show(ex.Message + "Please try After sometime");
        }
    }