• c# 导出Excel


    web导出Excel

    用法:在服务器端读取数据,在服务器端把数据以ms-execl的格式,以Response输出到浏览器(客户端)
    这里我们利用了ContentType属性,如text/html,这时将输出为超文本,即我们常见的网页
    格式到客户端,如果改为 ms-excel将将输出excel格式,也就是说以电子表格的格式输出到客户端,这时浏
    览器将提示你下载保存。ContentType的属性还包括:image/JPEG;text/HTML;image/GIF;vnd.ms-
    excel/msword 。同理,我们也可以输出(导出)图片、word文档等。下面的方法,均用了这个属性

     private void outputExcel()
            {
                Response.Clear();
                Response.Buffer = true;
                Response.AppendHeader("Content-Disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMdd") + ".xls");
                Response.ContentEncoding = System.Text.Encoding.UTF8;
                Response.ContentType = "application/vnd.ms-excel";
                this.EnableViewState = false;  
            }
    html输出为Excel
     public void outputExcel(System.Web.UI.Control ctl)
            {
                HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls");
                HttpContext.Current.Response.Charset = "UTF-8";
                HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
                HttpContext.Current.Response.ContentType = "application/ms-excel";
                ctl.Page.EnableViewState = false;
                System.IO.StringWriter tw = new System.IO.StringWriter();
                System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
                ctl.RenderControl(hw);
                HttpContext.Current.Response.Write(tw.ToString());
                HttpContext.Current.Response.End();
            }
    页面控件输出为Excel
    private void outputExcel(DataTable dt)
            {
              
                if (dt == null || dt.Rows.Count == 0)
                {
                    Fun.Alert("请先检索要查询的信息后在导出!");
                    return;
                }
                string fileName = "社员信息" + DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day + ".xls";
                HttpResponse resp;
                resp = Page.Response;
                resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
                resp.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);
                string colHeaders = "", ls_item = "", ls_Bottom = "";
    
                DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
                int i = 0;
                int cl = dt.Columns.Count;
                //取得数据表各列标题,各标题之间以	分割,最后一个列标题后加回车符
                //for (i = 0; i < cl; i++)
                //{
                //    if (i == (cl - 1))//最后一列,加
    
                //    {
                //        colHeaders += dt.Columns[i].Caption.ToString() + "
    ";
                //    }
                //    else
                //    {
                //        colHeaders += dt.Columns[i].Caption.ToString() + "	";
                //    }
    
                //}
                colHeaders += "网点	社员账号	地址	姓名	身份证号	手机号	田亩册	田亩数	入社时间
    ";
                resp.Write(colHeaders);//输出标题栏
    
                //向HTTP输出流中写入取得的数据信息
                foreach (DataRow row in myRow)
                {
                    //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据    
                    for (i = 0; i < cl; i++)
                    {
                        if (i == (cl - 1))//最后一列,加
    
                        {
                            ls_item += row[i].ToString() + "
    ";
                        }
                        else
                        {
                            ls_item += row[i].ToString() + "	";
                        }
                    }
                    resp.Write(ls_item);
                    ls_item = "";
    
                }
                resp.Write(ls_Bottom);//输出内容
                resp.End();
            }
    DataTable输出为Excel

    1. 将整个网页输出为Excel,会将页面中的按钮、文本框、其他文字一并输出,往往达不到导出要求。

    2. 将页面中的控件导出为Excel(如DataGrid、Repeater等),基本可以达到要求,但遇到控件分页的情况下,只会导出当前页面的内容,问不是select的全部内容。

    3. DataTable导出为Excel,可以更灵活的控制导出的标题、内容。如果还需要更详细的设置Excel的格式,可以尝试DataView导出Excel的方法。

    引用:

    http://www.cnblogs.com/top5/archive/2010/02/16/1668801.html

  • 相关阅读:
    LR: Voxel Map for Visual SLAM
    LR A Simplified Active Calibration Algorithm for Focal Length Estimation
    # LiteratureReview LeGO-LOAM
    Literature Review: Road is Enough
    vue使用SockJS实现webSocket通信
    flex布局常用样式
    vue 关于render渲染函数的使用
    vue单页面应用打开新窗口显示跳转页面的方法
    vuex项目框架
    动态form表单,数据编辑部分数据编辑输入视图不更新问题
  • 原文地址:https://www.cnblogs.com/eye-like/p/4624809.html
Copyright © 2020-2023  润新知