代码如下: string FileName = "部门和id对应表 " + DateTime.Now + ".xls";
Response.Charset = "GB2312";
Response.ContentEncoding = Encoding.UTF8;//System.Text
//如果设置GB2312会出现乱码
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
Response.AddHeader("content-type", "application / ms - excel");//设置输出文件的类型
//或Response.ContentType = FileType;
//定义一个输出流
StringWriter tw = new StringWriter();//System.IO
HtmlTextWriter hw = new HtmlTextWriter(tw);
GridView2.RenderControl(hw);//gridview绑定
Response.Write(tw.ToString());
Response.End();最终下载的excel表提示:您尝试打开的文件“”的格式与文件扩展名指定的格式不一致。打开前请验证文件没有损坏并且来源可信。是否立即打开该文件。
点是的话,打开就是空的啥也没有。求高人指点。
Response.Charset = "GB2312";
Response.ContentEncoding = Encoding.UTF8;//System.Text
//如果设置GB2312会出现乱码
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
Response.AddHeader("content-type", "application / ms - excel");//设置输出文件的类型
//或Response.ContentType = FileType;
//定义一个输出流
StringWriter tw = new StringWriter();//System.IO
HtmlTextWriter hw = new HtmlTextWriter(tw);
GridView2.RenderControl(hw);//gridview绑定
Response.Write(tw.ToString());
Response.End();最终下载的excel表提示:您尝试打开的文件“”的格式与文件扩展名指定的格式不一致。打开前请验证文件没有损坏并且来源可信。是否立即打开该文件。
点是的话,打开就是空的啥也没有。求高人指点。
唯一的不足是“格式与文件扩展名指定的格式不一致”的提示而已。
protected void btSaveData_Click(object sender, EventArgs e)
{
DataSet ds = 获取一个DataSet数据集;
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Text.StringBuilder builder = new System.Text.StringBuilder();
sw.WriteLine("ID编号,业务受理码,工单类型");
foreach (DataRow dr in ds.Tables[0].Rows)
{
builder = new System.Text.StringBuilder();
builder.Append(dr["ID"].ToString());
builder.Append(",");
builder.Append(dr["MainId"].ToString());
builder.Append(",");
builder.Append(dr["OrderType"].ToString());
sw.WriteLine(builder.ToString());
}
sw.Close();
string filename = Server.UrlPathEncode(DateTime.Now.ToString().Replace(" ", "").Replace("-", "").Replace(":", "") + ".csv");
Response.Buffer = false;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + filename);
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType = "application/ms-excel";
EnableViewState = false;
Response.Write(sw);
Response.End();
}
else
{
ClientScript.RegisterStartupScript(GetType(), "", "<script>alert('查询记录为空,无法完成导出操作!');</script>");
return;
}
}
希望能帮上忙。页面放一下按钮,这个按钮单击事件中写上以上代码;
/// 导出数据
/// </summary>
/// <param name="grv">当前的GridView</param>
/// <param name="FileType">导出文件类型</param>
/// <param name="FIleName">默认导出文件名</param>
/// <param name="sql">传入的sql</param>
public static void Export(GridView grv, string FileType, string FIleName, string sql)
{
grv.AllowPaging = false;
Bind(grv, sql);
HttpContext.Current.Response.Charset = "GB2312";
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FIleName, Encoding.UTF8).ToString());
HttpContext.Current.Response.ContentType = FileType; StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
grv.RenderControl(htw);
HttpContext.Current.Response.Write(sw.ToString());
HttpContext.Current.Response.End();
//this.EnableViewState = false;
}
/// <summary>
/// 绑定GridView
/// </summary>
/// <param name="grv">当前GridView</param>
/// <param name="sql">传入的sql</param>
public static void Bind(GridView grv, string sql)
{
grv.DataSource = DBUtility.DbHelperSQL.Query(sql);
grv.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
string fileName = DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls";
exportDoc.Export(GridView1, "application/ms-excel", fileName, sql);
} 点击按钮的操作 本人用的是 GridView 绑定的数据