.net aspx三种导出excel的方法

1.利用devexpress的控件gridviewexporter:

首先在.aspx文件中添加该控件(例:ID='gveDemo'),绑定要导出的gridview,再写个button,进.cs文件对应的onclick方法,执行语句:gveDemo.WriteXlsToResponse(title);//title为设置导出的excel标题

2.利用输入输出流:

protected void btnExport_Click(object sender, EventArgs e)
    {
        MainDataSetTableAdapters.VI_TRANSPORTMONITOR1TableAdapter vi = new         MainDataSetTableAdapters.VI_TRANSPORTMONITOR1TableAdapter();
        DataTable dtExcel = vi.GetData(hd_send.Value, hd_car.Value, hd_logistic.Value, Convert.ToDateTime(hd_starttime.Value), Convert.ToDateTime(hd_endtime.Value));
        CreateExcel(dtExcel, "application/ms-excel", "**表", 1, 0);//1代表第一行开始,0代表第0行中是时间类型
        
    }

    public void CreateExcel(DataTable dt, string FileType, string FileName, int startIndex, int timeIndex)
    {
        Response.Clear();
        Response.Charset = "UTF-8";
        Response.Buffer = true;
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
        Response.AppendHeader("Content-Disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls\"");
        Response.ContentType = FileType;
        string colHeaders = string.Empty;
        string ls_item = string.Empty;
        DataRow[] myRow = dt.Select();
        int i = 0;
        int cl = dt.Columns.Count;
        for (i = startIndex; i < cl; i++)
        {
            if (i == (cl - 1))
            {
                ls_item += dt.Columns[i].ToString() + "\n";
            }
            else
            {
                ls_item += dt.Columns[i].ToString() + "\t";
            }
        }
        Response.Output.Write(ls_item);
        ls_item = string.Empty;
        foreach (DataRow row in myRow)
        {
            for (i = startIndex; i < cl; i++)
            {
                if (i == (cl - 1))
                {
                    ls_item += row[i].ToString().Replace("\t", "").Replace("\n", "").Replace("\r", "") + "\n";
                }
                else
                {
                    if (i == timeIndex)
                    {
                        ls_item += Convert.ToDateTime(row[i].ToString()).ToString("yyyy-MM/", System.Globalization.DateTimeFormatInfo.InvariantInfo).Replace("-", "年").Replace("/", "月;") + "\t";
                    }
                    else
                    {
                        ls_item += row[i].ToString().Replace("\t", "").Replace("\n", "").Replace("\r", "") + "\t";
                    }
                }
            }
            Response.Output.Write(ls_item);
            ls_item = string.Empty;
        }
        Response.Output.Flush();
        Response.End();
    }

3.改变gridview的某列visible属性来决定gridviewexport是否导出该列数据:

直接把gv.columns["xxx"].visible=false;写到对应的button的onclick事件里就行

猜你喜欢

转载自blog.csdn.net/loopwastemytime/article/details/82911456
今日推荐