C#导出Excel类
ToExcel(DataTable dt, string FileName)方法为方法入口
using System;
using System.Data;
using System.Web.UI.WebControls.WebParts;
using System.Collections.Generic;
using System.Collections;
using System.Web.UI;
using System.Web;
using System.Drawing;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.IO;
using System.Web.Security;
using System.Text;
namespace MISBLL.InsuranceMS.Report
{
public class Ins_ToExcel
{
public void ToExcel(System.Web.UI.WebControls.DataGrid DataGrid2Excel, string FileName, string Title, string Head)
{
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
FrontDecorator(hw);
if (Title != "")
hw.Write(Title + "<br>");
if (Head != "")
hw.Write(Head + "<br>");
DataGrid2Excel.EnableViewState = false;
DataGrid2Excel.RenderControl(hw);
RearDecorator(hw);
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.Clear();
response.Buffer = true;
response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
response.ContentType = "application/vnd.ms-excel";
response.Write("<meta http-equiv=Content-Type content=text/html;charset=GB2312>");
string file = HttpUtility.UrlEncode(FileName + ".xls", System.Text.Encoding.GetEncoding("GB2312"));
response.AddHeader("Content-Disposition", "attachment; filename=" + file);
response.Charset = "GB2312";
response.Write(sw.ToString());
response.End();
}
private static void RearDecorator(HtmlTextWriter writer)
{
writer.WriteEndTag("Body");
writer.WriteEndTag("HTML");
}
//入口
public void ToExcel(DataTable dt, string FileName)
{
System.Web.UI.WebControls.DataGrid dgTemp = new System.Web.UI.WebControls.DataGrid();
dgTemp.DataSource = dt;
dgTemp.DataBind();
ToExcel(dgTemp, FileName, "", "");
}
//FrontDecorator方法
private static void FrontDecorator(HtmlTextWriter writer)
{
writer.WriteFullBeginTag("HTML");
writer.WriteFullBeginTag("Head");
writer.WriteEndTag("Head");
writer.WriteFullBeginTag("Body");
}
//// <summary>
/// 导出Excel
/// </summary>
/// <param name="dt">表</param>
public static void InitExcel(DataTable dtt)
{
DataGrid dgExport = null;
StringWriter strWriter = null;
HtmlTextWriter htmlWriter = null;
System.Data.DataTable dt = dtt;
//for (int i = 0; i < dt.Rows.Count; i++)
//{
// for (int j = 0; j < dt.Columns.Count; j++)
// {
// string temp = dt.Rows[i][j].ToString();
// bool flag = false;
// while (temp.IndexOf(" ") != -1)
// {
// //temp = temp.Replace(" ", "<br>");
// flag = true;
// }
// if (flag)
// dt.Rows[i][j] = temp;
// }
//}
if (dt != null)
{
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
HttpContext.Current.Response.Write("<meta http-equiv=Content-Type content=text/html;charset=GB2312>");
HttpContext.Current.Response.Charset = "";
strWriter = new StringWriter();
htmlWriter = new HtmlTextWriter(strWriter);
dgExport = new DataGrid();
dgExport.DataSource = dt.DefaultView;
dgExport.AllowPaging = false;
dgExport.HeaderStyle.ForeColor = System.Drawing.Color.Blue;
dgExport.HeaderStyle.BackColor = System.Drawing.Color.Red;
dgExport.DataBind();
dgExport.RenderControl(htmlWriter);
HttpContext.Current.Response.Write(strWriter.ToString());
HttpContext.Current.Response.End();
}
}
}
}