//定义文档类型、字符编码
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
//下面这行很重要, attachment 参数表示作为附件下载,您可以改成 online在线打开
//filename=FileFlow.xls 指定输出文件的名称,注意其扩展名和指定文件类型相符,可以为:.doc .xls .txt .htm
Response.AppendHeader("Content-Disposition", "attachment;filename=" + filename);
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
//Response.ContentType指定文件类型 可以为application/ms-excel、application/ms-word、application/ms-txt、application/ms-html 或其他浏览器可直接支持文档
Response.ContentType = "application/ms-excel";
// this.EnableViewState = false;
gvInfos.EnableViewState = false;
// 定义一个输入流
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); // this.dg_xm.RenderControl(oHtmlTextWriter);
// this.gvInfos.RenderControl(oHtmlTextWriter);
gvInfos.RenderControl(oHtmlTextWriter);
//this.RenderControl(oHtmlTextWriter);
//this 表示输出本页,你也可以绑定datagrid,或其他支持obj.RenderControl()属性的控件
Response.Write(oStringWriter.ToString());
Response.End();这是网上的一段代码,它只能输出当前页,我想将整个表输出,该怎么做??
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
//下面这行很重要, attachment 参数表示作为附件下载,您可以改成 online在线打开
//filename=FileFlow.xls 指定输出文件的名称,注意其扩展名和指定文件类型相符,可以为:.doc .xls .txt .htm
Response.AppendHeader("Content-Disposition", "attachment;filename=" + filename);
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
//Response.ContentType指定文件类型 可以为application/ms-excel、application/ms-word、application/ms-txt、application/ms-html 或其他浏览器可直接支持文档
Response.ContentType = "application/ms-excel";
// this.EnableViewState = false;
gvInfos.EnableViewState = false;
// 定义一个输入流
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); // this.dg_xm.RenderControl(oHtmlTextWriter);
// this.gvInfos.RenderControl(oHtmlTextWriter);
gvInfos.RenderControl(oHtmlTextWriter);
//this.RenderControl(oHtmlTextWriter);
//this 表示输出本页,你也可以绑定datagrid,或其他支持obj.RenderControl()属性的控件
Response.Write(oStringWriter.ToString());
Response.End();这是网上的一段代码,它只能输出当前页,我想将整个表输出,该怎么做??
但是那样的话,列名如果是英文,导出的列头也是英文还有一个方案,就是画面上再放置一个隐藏的grid,不分页,导出的时候导这个的数据
这是最笨的方法
protected void btnExcel_Click(object sender, EventArgs e)
{
if (GridView1.Rows.Count == 0)
{
ShowMessage("对不起,没有符合条件的数据,请您重试!");
return;
}
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
string fileName = "MessageList_"+System.DateTime.Now.ToShortDateString()+".xls";
Response.AppendHeader("Content-Disposition", "attachment;filename="+ fileName +"");
//经测试如果设置为 GetEncoding("GB2312"),导出的文件将会出现乱码。 Response.ContentEncoding = System.Text.Encoding.UTF7; //设置输出文件类型为excel文件。
Response.ContentType = "application/ms-excel";
this.EnableViewState = false;
System.IO.StringWriter sw = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
int nCur = GridView1.PageIndex;
int nSize = GridView1.PageSize; GridView1.AllowPaging = false;
BindGridView(); GridView1.Columns[7].Visible = false;
GridView1.Columns[0].Visible = false;
GridView1.RenderControl(hw);
GridView1.Columns[7].Visible = true;
GridView1.Columns[0].Visible = true; //以下恢复分页
GridView1.AllowPaging = true;
GridView1.PageIndex = nCur;
GridView1.PageSize = nSize; Response.Write(sw.ToString());
Response.End(); BindGridView();
}
全部数据导出 google 上有很多
using (FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate))
{
using (StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.Unicode))
{
StringBuilder rowWriter = new StringBuilder();
rowWriter.Append("姓名\t性别\t年龄\n");
foreach (DataSetView.UserRow row in dt.Rows)
{
rowWriter.Append(row.UserName).Append("\t");
rowWriter.Append(row.UserSex.ToString()).Append("\t");
rowWriter.Append(row.UserAge.ToString()).Append("\n");
}
streamWriter.Write(rowWriter.ToString());
}
}这个不知道成不?
protected void toExcel_Click(object sender, EventArgs e)
{
gdvResult.AllowPaging = false;
gdvResult.AllowSorting = false;
bind(); ToExcel(gdvResult); gdvResult.AllowPaging = true;
gdvResult.AllowSorting = true;
bind();
}
private void ToExcel(Control ctl)
{
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
HttpContext.Current.Response.ContentType = "application/ms-excel";
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls");
ctl.Page.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}其中bind()里面写的是Gridview的绑定
完成后在把gridview重新绑定以前的分页数据就可以了
支持 。 把你要导出的数据全部填充进去,然后导出数据集。
public static void OutExcel(DataSet ds, string tableName)
{
if (ds == null) return;
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Charset = "GB2312";
if (!String.IsNullOrEmpty(tableName))
{ HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpContext.Current.Server.UrlEncode(tableName) + ".xls"); }
else
{ HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=考试信息表.xls"); }
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
HttpContext.Current.Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
if (ds.Tables[0].Rows.Count > 0)
{
HttpContext.Current.Response.Write("<meta http-equiv=Content-Type content=\"text/html; charset=GB2312\">");
}
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.WebControls.TableItemStyle AlternatingStyle = new TableItemStyle();
System.Web.UI.WebControls.TableItemStyle headerStyle = new TableItemStyle();
System.Web.UI.WebControls.TableItemStyle itemStyle = new TableItemStyle();
AlternatingStyle.BackColor = System.Drawing.Color.FromArgb(233, 234, 244);
headerStyle.BackColor = System.Drawing.Color.LightGray;
headerStyle.Font.Bold = true;
headerStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
itemStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
System.Text.StringBuilder ExcelTable = null; System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
for (int i = 0; i < ds.Tables.Count; i++)
{
// GridView gv = new GridView();
// gv.ShowHeader = false;
// gv.AlternatingRowStyle.MergeWith(AlternatingStyle);
// gv.HeaderStyle.MergeWith(headerStyle);
// gv.RowStyle.MergeWith(itemStyle);
// gv.GridLines = GridLines.Both;
// gv.HeaderStyle.Font.Bold = true;
//gv.Font.Size = System.Web.UI.WebControls.FontUnit.Point(9);
// gv.DataSource = ds.Tables[i];
// gv.DataBind();
// gv.RenderControl(oHtmlTextWriter);
DataGrid dg = new DataGrid();
dg.DataSource = ds.Tables[i];
dg.ShowHeader = false;
dg.DataBind();
dg.RenderControl(oHtmlTextWriter);
}
HttpContext.Current.Response.Write(oStringWriter.ToString());
HttpContext.Current.Response.End();
} 注释部分是设置导出后的样式
放在你的代码前面.