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>

时间: 2025-01-14 09:31:44

asp.net 将repeater上数据导出到excel的相关文章

asp.net 查询到的数据导出为excel格式

DataTable pDataTable = newBLL.PRODUCT().GetModel(1862); inttRowCount = pDataTable.Rows.Count; inttColumnCount = pDataTable.Columns.Count; Response.Expires = 0; Response.Clear(); Response.Buffer = true; Response.Charset = "utf-8"; Response.Conten

将数据库的数据导出到excel中

这篇文章主要介绍了asp中把数据导出为excel的2种方法:分别用excel组件.文件组件实现,需要的朋友可以参考下.我们在做项目的时候经常要将数据库的数据导出到excel中,很多asp用户并不知道怎么写.这里总结了两种方法来导出excel,希望能帮到大家. 方法一:用excel组件 方法二:使用文件组件 可以看出,第一种方法是直接导出的是excel文件,而第二张方法是到处的是文本文件,只不过后缀名改成了xls. 然后看起来就是excel了. 经过对比第一种方法的效率没有第二种方法的效率高,而且

支持将数据导出到Excel文档的时候设置单元格格式的.NET控件Spire.DataExport

Spire.DataExport for .NET是e-iceblue公司推出的一款数据导出类.NET控件.作为一款专业的数据导出控件,Spire.DataExport for .NET可以帮助开发人员轻松快速的从各种主流数据库中导出数据并存储于各种文件格式中.他支持从SQL Command, DataTable,ListView中导出数据并存储于MS Excel,MS Word, HTML, XML, PDF, MS Access, DBF, SQL Script, SYLK, DIF, CS

Qt中将QTableView中的数据导出为Excel文件

如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能.之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件.在使用了QtSql模块后,我很容易的将这个类改写应用在Qt程序中.类的名字叫“ExportExcelObject”.使用起来很简单: [cpp] view plaincopy // 1. declare an object // – fileName Excel 文件路径 // – sheetName Excel 工作表(sheet)名称 /

使用原生php将数据库数据导出到excel文件中

最近在工作中遇到一个需求,需要将数据库中的数据导出到excel文件中,并下载excel文件.因为以前没做过,所以就百度了一下, 网上说的大多是使用PHPExcel类来操作excel文件,这还要去下载这个类才能使用,而我只想使用原生的php,不想那么麻烦,好在 也有网友说到关于原生php生成excel文件的方法,其实很简单,下面把我结合网上资料自己实践的代码分享一下. 一般我们这种导数据的操作都是通过用户在网页页面上点击某个按钮触发相应js方法,然后请求php接口来实现的,所以主要有两种 方法来完

mysql将查询到的数据导出为excel

现在需要将mysql库中的一些数据导出为excel,然后打印.其实实现上面说的需求很简单,只要你把sql语句写出来,然后导出为excel即可 具体实现流程如下: 1.写出sql语句,查询出结果. 2.在查询的结果上点击右键,选择"导出所有表数据记录/结果为..." 如图所示: 选择"导出所有表数据记录/结果为..."之后出现如下图所示 点击导出即可. ======================================================== 需

C#大量数据导出到Excel

工作过程中经常会用到将数据导出到Excel中,一般情况下需要导出的数据都是几百几千条或者上万条,这都没有什么问题,但有时候会遇到特殊的需求,客户要求把几十万条甚至上百万条的数据导出到Excel中,这就比较麻烦了.当数据量很大导出到Excel表格的时候通常会遇到两个问题:一个是内存溢出,由于需要处理的数据量比较大,导致Excel占用的内存过多从而导致数据还没有导出完就因为内存溢出而失败:另一个是每张Excel表单最多只能有65536行,所以当DataTable或DataSet中数据多于65536行

使用PHPExcel将数据导出至Excel

安装类库 从GitHub上下载PHPExcel类库 地址:https://github.com/PHPOffice/PHPExcel 解压后将Classes文件夹移动到ThinkPHP的extend目录,并将其重命名为phpexcel 在项目中需要的地方添加引用 import('phpexcel.PHPExcel', EXTEND_PATH); 代码实现 <?php namespace app\index\controller; use think\Controller; class Excel

数据导出至Excel文件--好库编程网http://code1.okbase.net/codefile/SerializeHelper.cs_2012122018724_118.htm

using System; using System.IO; using System.Data; using System.Collections; using System.Data.OleDb; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; /// <summary> /// Excel操作类 /// </summary> /// Microsoft Excel 11.0 Obj