asp.net 将repeater上数据导出到excel
1,首先得到一个DataTable
public DataTable GetTable(string sql)
{
SqlConnnection con=new SqlConnection(ConfigurationManager.ConnectionStrings["connectionstringname"].ConnectionString);
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds);
con.Close();
return ds.Tables[0];
}
2,Excel导出功能实现的实现方法
/// <summary>
/// 将网格数据导出到Excel,
/// </summary>
/// <param name="ctrl">网格名称(如GridView1)</param>
/// <param name="FileType">要导出的文件类型(Excel:application/ms-excel)</param>
/// <param name="FileName">要保存的文件名</param>
//System.Web.UI.Control ctrl相当于Control ctrl 我这么写是由于我的项目中有冲突
private void Export(System.Web.UI.Control ctrl, string FileType, string FileName)
{
HttpContext.Current.Response.Charset = "GB2312";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;//注意编码
HttpContext.Current.Response.AppendHeader("Content-Disposition",
"attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString());
HttpContext.Current.Response.ContentType = FileType;//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword
ctrl.Page.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
ctrl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
//这个重写是必须的,可以不让他做事,但是必须存在
public override void VerifyRenderingInServerForm(System.Web.UI.Control control)
{
}
3,在导出按钮的事件中调用Excel的导出方法
protected void btnExport_Click(object sender, EventArgs e)
{
string classID = Request["ClassID"].ToString();
string dt1 = txtStart.Value;
string dt2 = txtEnd.Value;
string sql =
"select ClassCname,NewsTitle,a.CreatTime as createtime,Editor FROM jy_news a,jy_nc b,jy_news_class c where a.NewsID=b.NewsID AND b.ClassID=c.ClassID ";
string where = "";
if (!string.IsNullOrEmpty(classID))
{
where+=" and b.Classid='" +classID + "'";
}
if (!string.IsNullOrEmpty(dt1))
{
where += " and a.CreatTime>='" + dt1 + "'";
}
if (!string.IsNullOrEmpty(dt2))
{
where += " and a.CreatTime<='" + dt2 + "'";
}
sql = sql + where + " order by a.CreatTime desc";
DataTable dt = GetTable(sql);
this.rptdata.DataSource = dt;
this.rptdata.DataBind();
foreach (System.Web.UI.Control c in rptdata.Controls)
{
Label lbl1 = (Label)c.FindControl("Label1");
Label lbl2 = (Label)c.FindControl("Label2");
if (string.IsNullOrEmpty(lbl1.Text) && string.IsNullOrEmpty(lbl2.Text))
{
if (!string.IsNullOrEmpty(dt1) && !string.IsNullOrEmpty(dt2))
{
string dt3 = string.Format("{0:yyyy.MM.dd}", DateTime.Parse(dt1));
string dt4 = string.Format("{0:yyyy.MM.dd}", DateTime.Parse(dt2));
lbl1.Text = dt3;
lbl2.Text = dt4;
}
}
break;
}
string filename = "新闻列表";
if (!string.IsNullOrEmpty(dt1))
{
filename = "_" + dt1;
}
if (!string.IsNullOrEmpty(dt2))
{
filename = filename + "-" + dt2;
}
filename = filename + ".xls";
string filetype = "application/ms-excel";
System.Web.UI.Control ctrl = rptdata;
Export(ctrl, filetype, filename);
}
最后是前台页面,页面上有个日历控件My97DatePicker
<html>
<head runat="server">
<title>新闻列表导出</title>
<script src="/My97DatePicker/WdatePicker.js" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<div id="msg">
<p style="color: red">
</p>
</div>
<div>
<label id="lblstart">
开始时间:</label><input type="text" id="txtStart" onclick="WdatePicker()" runat="server"
onchange="txt();" />
<label id="lblend">
结束时间:</label><input type="text" id="txtEnd" onclick="WdatePicker()" runat="server" />
<asp:Button ID="btnExport" runat="server" Text="导出" OnClick="btnExport_Click" />
</div>
<div id="repeaterView">
<asp:Repeater ID="rptdata" runat="server">
<HeaderTemplate>
<table border="1" cellpadding="0" cellspacing="0" style="width: 1006px; border-collapse: collapse;
text-align: center;">
<tr>
<td colspan="5" style="text-align: center; font-size: 150%">
<strong>普陀区科协网站信息发布签发单</strong>
</td>
</tr>
<tr style="height: 30px">
<td colspan="3" style="border: 0px">
发布时间: <asp:Label ID="Label1" runat="server" Text=""></asp:Label>--
<asp:Label ID="Label2" runat="server" Text=""></asp:Label>
</td>
<td colspan="2" style="border: 0px">
签发人:
</td>
</tr>
<tr style="height: 30px">
<td style="font-weight:bold; text-align: center">
<font size="3">序号</font>
</td>
<td style="font-weight: bold; text-align: center">
<font size="3">标题</font>
</td>
<td style="font-weight: bold; text-align: center">
<font size="3">所在栏目</font>
</td>
<td style=" font-weight: bold; text-align: center">
<font size="3">发布时间</font>
</td>
<td style="font-weight: bold; text-align: center">
<font size="3">发布人</font>
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr style="height: 30px">
<td style="text-align: center">
<%# Container.ItemIndex + 1 %>
</td>
<td style="text-align: center">
<%# DataBinder.Eval(Container.DataItem, "NewsTitle")%>
</td>
<td style="text-align: center">
<%# DataBinder.Eval(Container.DataItem, "ClassCname")%>
</td>
<td style="text-align: center">
<%#string.Format("{0:yyyy年MM月dd日}", Eval("createtime"))%>
</td>
<td style="text-align: center">
<%# DataBinder.Eval(Container.DataItem, "Editor")%>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>
asp.net 将repeater上数据导出到excel的更多相关文章
- Asp.net网页中DataGridView数据导出到Excel
经过上网找资料,终于找到一种可以直接将GridView中数据导出到Excel文件的方法,归纳方法如下: 1. 注:其中的字符集格式若改为“GB2312”,导出的部分数据可能为乱码: 导出之前需要关闭分 ...
- asp.net将数据导出到excel
本次应用datatable导出,若用gridview(假设gridview设为了分页显示)会出现只导出当前页的情况. protected void btnPrn_Click(object sender ...
- JS 在页面上直接将json数据导出到excel,支持chrome,edge,IE10+,IE9,IE8,Safari,Firefox
JS 在页面上直接将json数据导出到excel,支持chrome,edge,IE10+,IE9,IE8,Safari,Firefox <html> <head> </h ...
- 将datagrid中数据导出到excel中 -------<<工作日志2014-6-6>>
前台datagrid数据绑定 #region 导出到excel中 /// <summary> /// 2014-6-6 /// </summary> / ...
- Qt中将QTableView中的数据导出为Excel文件
如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能.之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件.在使用了QtSql模块后,我很容易的将这个类 ...
- C#大量数据导出到Excel(转)
工作过程中经常会用到将数据导出到Excel中,一般情况下需要导出的数据都是几百几千条或者上万条,这都没有什么问题,但有时候会遇到特殊的需求,客户要求把几十万条甚至上百万条的数据导出到Excel中,这就 ...
- 使用PHPExcel将数据导出至Excel
安装类库 从GitHub上下载PHPExcel类库 地址:https://github.com/PHPOffice/PHPExcel 解压后将Classes文件夹移动到ThinkPHP的extend目 ...
- Pl/sql 如何将oracle的表数据导出成excel文件?
oracle将表数据导出成excel文件的方法 1)在SQL窗体上,查询需要导出的数据 --查询数据条件-- ; 结果视图 2)在查询结果的空白处,右键选择Copy to Excel 3) 查看导出e ...
- 大批量数据导出到Excel的实现
在平时的项目中,将数据导出到Excel的需求是很常见的,在此对一些常见的方法做以总结,并提供一种大数据量导出的实现. OLEDB 使用OLEDB可以很方便导出Excel,思路很简单,处理时将Exc ...
随机推荐
- 利用__attribute__((section()))构建初始化函数表【转】
转自: https://mp.weixin.qq.com/s?__biz=MzAwMDUwNDgxOA==&mid=2652663356&idx=1&sn=7797629530 ...
- 配置kernel的log buf大小(如果kmsg log被覆盖)
如果在打印kmsg log时发现log被覆盖,log 的buf不够大可以使用默认配置调buf: defconfig CONFIG_LOG_BUF_SHIFT=20 (默认是17 2的17次方) ...
- python模块之itertools
在循环对象和函数对象中,我们了解了循环器(iterator)的功能.循环器是对象的容器,包含有多个对象.通过调用循环器的next()方法 (__next__()方法,在Python 3.x中),循环器 ...
- ubuntu16.04 安装 python3.6, 并创建虚拟环境(使用python3.6)
ubuntu16.04 安装 python3.6, 并创建虚拟环境(使用python3.6) ubuntu16.04中默认安装了 python2.7 python3 python3.5.2 (注意 : ...
- 自定义事件的触发dispatchEvent
1. 对于标准浏览器,其提供了可供元素触发的方法:element.dispatchEvent(). 不过,在使用该方法之前,我们还需要做其他两件事,及创建和初始化.因此,总结说来就是: documen ...
- POJ 3169 Layout (spfa+差分约束)
题目链接:http://poj.org/problem?id=3169 题目大意:n头牛,按编号1~n从左往右排列,可以多头牛站在同一个点,给出ml行条件,每行三个数a b c表示dis[b]-dis ...
- java 基础知识-数组的7种算法(排序、求和、最值、遍历...)
遍历 遍历就是把这个数组的每个元素 显示出来 遍历的方法就是先定义这个数组的大小,然后用FOR循环来完成数组,例如 double[] score = new double[5]; Scanner in ...
- git用法大全
转载自实验楼,之前有更新过两篇git的文章,毕竟内容太少,而git还有很多更丰富的技能,在实验楼上有一系列全的教程,这里做一下备案.需要时查阅. Git 实战教程 目录 一.实验说明 二.git的初始 ...
- 一道关于数据库(经典父子级 ID 关联)更新题,大家帮忙想想还有其它解决思路没有?
昨天,一同事发过来的一道数据库题目,就是哪种经典的父子级 ID 在同一数据库表中设计类型.需要在原表中添加一个字段,同时,将该节点的父子级详细信息插入到原表新增的一字段中,具体效果如下图. AreaC ...
- 【LOJ】#2544. 「JXOI2018」游戏
题解 九条可怜还有那么善良的一面??? 显然有些数在这个区间里没有数是它的约数,它们其中的最后一个取的一定就是\(t(p)\)的值 这样我们只需要枚举\(t(p)\)的值,这个值就是"没有任 ...