DataTableToExcel
/// <summary>
/// 汇出Excel
/// </summary>
/// <param name="dtData">当前要导出的DataTable</param>
/// <param name="fileName">文件名</param>
/// <param name="strTitle">grid的标题,多个用;隔开</param>
public static void DataTableToExcel(DataTable dtData, string fileName, string strTitle)
{
//iNoVisibleCount不可见的列数
short iNoVisibleCount = (short)0;
DataGrid dgExport = null;
//当前对话
HttpContext curContext = System.Web.HttpContext.Current;
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;
if (dtData != null)
{
curContext.Response.ClearContent();
curContext.Response.Write("<meta http-equiv=Content-Type content=text/html;charset=utf-8>");
curContext.Response.AddHeader("Content-Disposition", (string)("attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)));
string[] arrTitle = strTitle.TrimEnd(";".ToCharArray()).Split(";".ToCharArray());
short i = (short)0;
if (strTitle.Trim() != "")
{
for (i = 0; i <= arrTitle.Length - 1; i++)
{
dtData.Columns[i].ColumnName = arrTitle[i];
}
}
//curContext.Response.ContentType = "application/ms-excel";
curContext.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);
//定义一个无分页的DataGrid
dgExport = new System.Web.UI.WebControls.DataGrid();
if (strTitle.Trim() != "")
{
iNoVisibleCount = (short)(dtData.Columns.Count - arrTitle.Length);
}
if (iNoVisibleCount > 0)
{
for (i = 1; i <= iNoVisibleCount; i++)
{
dtData.Columns.Remove(dtData.Columns[arrTitle.Length]);
}
}
dgExport.DataSource = dtData.DefaultView;
dgExport.AllowPaging = false;
dgExport.DataBind();
//返回客户端
dgExport.RenderControl(htmlWriter);
curContext.Response.Write("<style>td{mso-number-format:\\@}</style>");
curContext.Response.Write(strWriter.ToString());
curContext.Response.End();
}
}
浙公网安备 33010602011771号