DataGridView中多维表头如何导出到Excel
解决方案 »
- 刷新页面或重新提交页面Dropdownlist选中值不变后值不变?
- 为什么Response.Write()没有弹出对话框
- alert('')提示框中的内容如何换行。
- 求助!!!Atlas框架下使用水晶报表10时无法实现导出和打印。急~~~~~~~~~~~
- 文本框问题,十万火急
- 请以下人员来接分!谢谢大家的祝福!
- C#,windows程序中的DataGirdStyle的MappingName的问题
- 怎样使用microsoft media player控件?
- 重新安装单击版CRYSTAL 9后出现的问题
- asp.net 中 如何嵌入asp文件 ,<!--#include file=.....-->(在线等待)
- 关于泛型List()与前台数据显示的问题
- 怎么把aspx页面整体的保存为Excel表格样式
/// 导出
/// </summary>
/// <param name="dtData"></param>
/// <param name="FileName"></param>
/// <param name="fields"></param>
public void doExport(DataTable dtData, string FileName, DataControlFieldCollection fields)
{
// 当前对话
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
// IO用于导出并返回excel文件
System.IO.StringWriter strWriter = null; if (dtData != null)
{
// 设置编码和附件格式
System.Web.HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Buffer = true;
string fileName = HttpUtility.UrlEncode(FileName, System.Text.Encoding.GetEncoding("GB2312"));
curContext.Response.ContentType = "text/csv";
curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ".csv"); //定义输出文件和文件名
// 导出excel文件
strWriter = new System.IO.StringWriter();
if (dtData.Rows.Count != 0)
{
curContext.Response.ContentEncoding = System.Text.Encoding.Default;
curContext.Response.Charset = "GB2312";
//strWriter.Write("开始时间,");
//strWriter.Write(this.bgntime.Value+",");
//strWriter.Write("结束时间"+",");
//strWriter.Write(this.endtime.Value);
//strWriter.WriteLine();
foreach (DataControlField field in fields)
{
if (!string.IsNullOrEmpty(field.HeaderText))
{
strWriter.Write(field.HeaderText + ",");
}
}
strWriter.Write("\n"); //foreach (DataRow dr in dtData.Rows)
for (int j = 0; j < dtData.Rows.Count;j++ )
{
DataRow dr = dtData.Rows[j]; for (int i = 0; i < dtData.Columns.Count; i++)
{
if (i == 0)
{
strWriter.Write("\"" + (j+1).ToString() + "\"" + ",");
}
else
strWriter.Write("\"" + dr[i].ToString() + "\"" + ",");
}
strWriter.Write("\n");
} }
curContext.Response.Write(strWriter.ToString());
curContext.Response.Flush();
curContext.Response.End();
}
}
protected void ibtnDaoChu_Click(object sender, ImageClickEventArgs e)
{
DataControlFieldCollection dcfc = new DataControlFieldCollection();
DataTable dd = Session["dtExport"] as DataTable;
dcfc = sgv1.Columns;
doExport(dd, "logs", dcfc);
}
private System.Globalization.CultureInfo myCItrad;
private StringWriter stringWrite;
private HtmlTextWriter htmlWrite;HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Charset = "GB2312";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"; HttpContext.Current.Response.Write("<meta http-equiv=Content-Type content=\"text/html; charset=GB2312\">");
myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
stringWrite = new StringWriter(myCItrad);
htmlWrite = new HtmlTextWriter(stringWrite);
for (int i = 0; i < ds.Tables.Count; i++)
{
DataGrid dg = new DataGrid();
dg.DataSource = ds.Tables[i];
dg.ShowHeader = false;//是否显示列名
dg.HeaderStyle.BackColor = Color.Yellow;
dg.DataBind();
dg.RenderControl(htmlWrite);
} HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename='" + HttpContext.Current.Server.UrlEncode(filename) + "'.xls");//下载的文件标题为中文 HttpContext.Current.Response.Write(stringWrite.ToString());
HttpContext.Current.Response.End();