#region 导出 DataTable 到 Excel 文档中 ------
/// <summary>
/// DataTable 导出为 Excel
/// </summary>
/// <param name="dtSource">DataTable 数据源</param>
/// <param name="fileName">导出的 Excel 文件名称</param>
protected void ExportTableToExcel(DataTable dtSource, string fileName)
{
ExportTableToExcel(dtSource, fileName, null);
}
/// <summary>
/// DataTable 导出为 Excel
/// </summary>
/// <param name="dtSource">DataTable 数据源</param>
/// <param name="fileName">导出的 Excel 文件名称</param>
/// <param name="itemCreatedAction">DataGrid的ItemCreated事件</param>
/// <param name="action">封装的一个方法</param>
protected void ExportTableToExcel(DataTable dtSource, string fileName, DataGridItemEventHandler itemCreatedAction, Action<DataGrid> action)
{
DataGrid grid = new DataGrid();
grid.ItemCreated += itemCreatedAction;
grid.DataSource = dtSource.DefaultView; //输出DataTable的内容
grid.DataBind();
ExportTableToExcel(grid, fileName, action);
}
/// <summary>
/// DataTable 导出为 Excel
/// </summary>
/// <param name="dtSource">DataTable 数据源</param>
/// <param name="fileName">导出的 Excel 文件名称</param>
/// <param name="itemCreatedAction">DataGrid的ItemCreated事件</param>
protected void ExportTableToExcel(DataTable dtSource, string fileName, DataGridItemEventHandler itemCreatedAction)
{
ExportTableToExcel(dtSource, fileName, itemCreatedAction, null);
}
/// <summary>
/// DataTable 导出为 Excel
/// </summary>
/// <param name="dtSource">DataTable 数据源</param>
/// <param name="fileName">导出的 Excel 文件名称</param>
protected void ExportTableToExcel(DataGrid grid, string fileName)
{
ExportTableToExcel(grid, fileName, null);
}
/// <summary>
/// DataTable 导出为 Excel
/// </summary>
/// <param name="dtSource">DataTable 数据源</param>
/// <param name="fileName">导出的 Excel 文件名称</param>
/// <param name="DataGrid">封装的一个方法</param>
protected void ExportTableToExcel(DataGrid grid, string fileName, Action<DataGrid> action)
{
ExportTableToExcel(grid, fileName, string.Empty, action);
}
/// <summary>
/// DataTable 导出为 Excel
/// </summary>
/// <param name="dtSource">DataTable 数据源</param>
/// <param name="fileName">导出的 Excel 文件名称</param>
/// <param name="coding">编码</param>
/// <param name="DataGrid">封装的一个方法</param>
protected void ExportTableToExcel(DataGrid grid, string fileName, string coding, Action<DataGrid> action)
{
if (coding == string.Empty)
{
coding = "UTF-8"; //GB2312,UTF-8
}
System.Text.Encoding code;
try
{
code = System.Text.Encoding.GetEncoding(coding);
// 设置导出的 DataGrid 样式
grid.GridLines = GridLines.Both;
grid.HeaderStyle.Font.Bold = true;
if (action != null)
{
action(grid);
}
System.IO.StringWriter stringWriter = new System.IO.StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
//if (Path.GetExtension(fileName).ToLower() != ".xls")
//{
// fileName = Path.GetFileNameWithoutExtension(fileName) + ".xls";
//}
//fileName = HttpUtility.UrlEncode(fileName);//, code);
//Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ";");
//HttpContext.Current.Response.ContentType = "application/ms-excel";
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"; // 要么使用这个方式,要么使用以上注释的两行。
Response.Charset = ""; //GB2312
Response.ContentEncoding = code;// System.Text.Encoding.Default;// System.Text.Encoding.GetEncoding("GB2312");
this.EnableViewState = false;
grid.RenderControl(htmlWriter);
Response.Write(stringWriter.ToString());
}
catch (Exception ex)
{
string msg = ex.Message;
return;
}
HttpContext.Current.Response.End();
}
#endregion