之前做过一个这样的项目,需要把Girdiew查找出来的数据导出为Excel文件和Word文件,现在先收集起来。当初录入的是同学的名字,来个高斯模糊先~
//导出excel
protected void btnExcel_Click(object sender, EventArgs e)
{
GridView1.AllowPaging = false;
string strsql = @"SELECT class.class_name, users.user_name, COUNT(late.user_id) AS cishu FROM class INNER JOIN
users ON class.class_id = users.class_id INNER JOIN
late ON users.user_id = late.user_id";
if (dept.SelectedValue != "")
{
strsql += " and users.dept_id=" + dept.SelectedValue;
}
if (special.SelectedValue != "")
{
strsql += " and users.spc_id=" + special.SelectedValue;
}
if (room.SelectedValue != "")
{
strsql += " and users.class_id=" + room.SelectedValue;
}
if (region.SelectedValue != "")
{
strsql += " and late.region_id=" + region.SelectedValue;
}
if (txtKs.Text != "")
{
strsql += " and late.late_time>='" + txtKs.Text + "'";
}
if (txtJs.Text != "")
{
strsql += " and late.late_time<='" + txtJs.Text + "'";
}
if (txtRoom.Text != "")
{
strsql += " and room='" + txtRoom.Text + "'";
}
if (txtName.Text != "")
{
strsql += " and user_name like '%" + txtName.Text + "%'";
}
strsql += " GROUP BY class.class_name, users.user_name";
strsql += " ORDER BY cishu DESC";
DataTable dt = db.reDt(strsql);
GridView1.DataSource = dt;
GridView1.DataBind();
//一、定义文档类型、字符编码
Response.Clear();
Response.Buffer = true;
Response.Charset = "gb2312";
//下面这行很重要, attachment 参数表示作为附件下载,您可以改成 online在线打开
//filename=FileFlow.xls 指定输出文件的名称,注意其扩展名和指定文件类型相符,可以为:.doc .xls .txt .htm
DateTime dtime = DateTime.Now;//给导出后的excel表命名,结合表的用途以及系统时间来命名
string filename = dtime.Year.ToString() + dtime.Month.ToString() + dtime.Day.ToString();
Response.AppendHeader("Content-Disposition", "attachment;filename=" + filename + "latecount.xls");
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";
GridView1.EnableViewState = false;
//二、定义一个输入流
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
//三、将目标数据绑定到输入流输出
GridView1.RenderControl(oHtmlTextWriter);
//this 表示输出本页,你也可以绑定datagrid,或其他支持obj.RenderControl()属性的控件
Response.Write(oStringWriter.ToString());
Response.End();
GridView1.AllowPaging = true;
}
//导出word
protected void btnWord_Click(object sender, EventArgs e)
{
GridView1.AllowPaging = false;
string strsql = @"SELECT class.class_name, users.user_name, COUNT(late.user_id) AS cishu FROM class INNER JOIN
users ON class.class_id = users.class_id INNER JOIN
late ON users.user_id = late.user_id";
if (dept.SelectedValue != "")
{
strsql += " and users.dept_id=" + dept.SelectedValue;
}
if (special.SelectedValue != "")
{
strsql += " and users.spc_id=" + special.SelectedValue;
}
if (room.SelectedValue != "")
{
strsql += " and users.class_id=" + room.SelectedValue;
}
if (region.SelectedValue != "")
{
strsql += " and late.region_id=" + region.SelectedValue;
}
if (txtKs.Text != "")
{
strsql += " and late.late_time>='" + txtKs.Text + "'";
}
if (txtJs.Text != "")
{
strsql += " and late.late_time<='" + txtJs.Text + "'";
}
if (txtRoom.Text != "")
{
strsql += " and room='" + txtRoom.Text + "'";
}
if (txtName.Text != "")
{
strsql += " and user_name like '%" + txtName.Text + "%'";
}
strsql += " GROUP BY class.class_name, users.user_name";
strsql += " ORDER BY cishu DESC";
DataTable dt = db.reDt(strsql);
GridView1.DataSource = dt;
GridView1.DataBind();
Response.Clear();
Response.Buffer = true;
Response.Charset = "gb2312";
DateTime dtime = DateTime.Now;//给导出后的word表命名,结合表的用途以及系统时间来命名
string filename = dtime.Year.ToString() + dtime.Month.ToString() + dtime.Day.ToString();
Response.AppendHeader("Content-Disposition", "attachment;filename=" + filename + "latecount.doc");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.ContentType = "application/ms-word";
GridView1.EnableViewState = false;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
GridView1.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
GridView1.AllowPaging = true;
}
//重载VerifyRenderingInServerForm方法,否则运行的时候会出现如下错误提示:“类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内”
public override void VerifyRenderingInServerForm(Control control)
{
//解决:控件必须放在具有 runat=server 的窗体标记内"的错误
//在页面中重写Page基类的VerifyRenderingInServerForm方法
// Confirms that an HtmlForm control is rendered for
}
导出的效果如下:
word:
excel:
代码中那种if语句,只是筛选数据的条件。 (~﹃~)~zZ睡觉=-= 晚安