zoukankan      html  css  js  c++  java
  • Asp.Net Excel导出类

    using System;
    using System.Collections;
    using System.IO;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    namespace CIMS.Utl
    {
    public class ExcelUtl
    {
    public static void ExportToExcel(object dataList, string[] fields, string[] headTexts, string title)
    {
    GridView gvw = new GridView();
    int ColCount, i;

    //如果筛选的字段和对应的列头名称个数相对的情况下只导出指定的字段
    if (fields.Length != 0 && fields.Length == headTexts.Length)
    {
    ColCount = fields.Length;
    gvw.AutoGenerateColumns = false;

    for (i = 0; i < ColCount; i++)
    {
    BoundField bf = new BoundField();
    bf.DataField = fields[i];
    bf.HeaderText = headTexts[i];
    gvw.Columns.Add(bf);
    }
    }
    else
    {
    gvw.AutoGenerateColumns = true;
    }

    SetStype(gvw);

    //这里是将要导出到execl里的单元格格式化为字符类型。
    gvw.RowDataBound += delegate(object sender, GridViewRowEventArgs e)
    {
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
    foreach (TableCell cell in e.Row.Cells)
    {
    cell.Attributes.Add("style", "vnd.ms-excel.numberformat:@");

    }
    }
    };

    gvw.DataSource = dataList;
    gvw.DataBind();

    ExportToExcel(gvw, title);
    }
    /// <summary>
    /// 导出数据到Excel
    /// </summary>
    /// <param name="DataList">IList Data</param>
    /// <param name="Fields">要导出的字段</param>
    /// <param name="HeadName">字段对应显示的名称</param>
    public static void ExportToExcel(IList dataList, string[] fields, string[] headTexts)
    {
    ExportToExcel(dataList, fields, headTexts, string.Empty);
    }

    /// <summary>
    /// 设置样式
    /// </summary>
    /// <param name="gvw"></param>
    private static void SetStype(GridView gvw)
    {
    gvw.Font.Name = "Verdana";
    gvw.BorderStyle = System.Web.UI.WebControls.BorderStyle.Solid;
    gvw.HeaderStyle.BackColor = System.Drawing.Color.LightCyan;
    gvw.HeaderStyle.ForeColor = System.Drawing.Color.Black;
    gvw.HeaderStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
    gvw.HeaderStyle.Wrap = false;
    gvw.HeaderStyle.Font.Bold = true;
    gvw.HeaderStyle.Font.Size = 10;
    gvw.RowStyle.Font.Size = 10;
    }
    /// <summary>
    /// 导出GridView中的数据到Excel
    /// </summary>
    /// <param name="gvw"></param>
    /// <param name="DataList"></param>
    private static void ExportToExcel(GridView gvw, string title)
    {
    string fileName;
    HttpContext.Current.Response.Buffer = true;
    HttpContext.Current.Response.ClearContent();
    HttpContext.Current.Response.ClearHeaders();
    //HttpContext.Current.Response.Charset = "utf-8";
    //HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
    //HttpContext.Current.Response.Charset = "GB2312"; //设置了类型为中文防止乱码的出现
    HttpContext.Current.Response.Charset = "UTF-8";
    HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
    HttpContext.Current.Response.HeaderEncoding = System.Text.Encoding.UTF8;

    fileName = string.Format("Export-File {0:yyyy-MM-dd_HH_mm}.xls", DateTime.Now);
    HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);
    //HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文

    //HttpContext.Current.Response.AppendHeader("Content-Type", "text/html; charset=gb2312");
    HttpContext.Current.Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
    //HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
    StringWriter tw = new System.IO.StringWriter();
    HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
    gvw.RenderControl(hw);
    if (!string.IsNullOrEmpty(title))
    {
    HttpContext.Current.Response.Write("<b><center><font size=3 face=Verdana color=#0000FF>" + title + "</font></center></b>");
    }
    HttpContext.Current.Response.Write(tw.ToString());
    //HttpContext.Current.Response.Flush();
    //HttpContext.Current.Response.Close();
    HttpContext.Current.Response.End();


    gvw.Dispose();
    tw.Dispose();
    hw.Dispose();

    gvw = null;
    tw = null;
    hw = null;
    }
    }
    }

    调用:

    ExportToExcel(dataSource,

                       new string[] { "Name", "Age", "Date" },

                       new string[] { "姓名", "年龄", "日期"},

                       "用户信息表"

                       );

  • 相关阅读:
    Lucene.NET 开发实现
    WIN7安装配置 SharePoint2010 各种问题汇总
    Wince后台系统补丁更新实现
    Lucene.NET 若干知识点&&疑难杂症以及解决
    .NET设计模式系列文章 很有名的博客园TerryLee的系列文章,设计模式不可多得的好文
    客户端多线程应用的好工具:BackgroundWorker
    Swift、ObjectiveC 单例模式 (Singleton)
    字节对齐
    iOS中求出label中文字的行数和每一行的内容
    工作终于到的坑爹集锦,欢迎补充~
  • 原文地址:https://www.cnblogs.com/Areas/p/2303417.html
Copyright © 2011-2022 走看看