gridview中的数据导出到EXCEL问题

实现功能,例如数据有60条,导出报表1为50条数据,报表2为10条数据,以50条数据为分页,实现导出2个报表。... 实现功能,例如数据有60条,导出报表1为50条数据,报表2为10条数据,以50条数据为分页,实现导出2个报表。 展开
 我来答
wfe52lzh
2012-07-05 · TA获得超过572个赞
知道小有建树答主
回答量:114
采纳率:0%
帮助的人:109万
展开全部
DataTable dtResult = bll.CustomerQuerySQL(strBuilder.ToString()).Tables[0];//获取所有数据
List<DataRow> drList = new List<DataRow>();//分配的行
ArrayList arrlist = new ArrayList();//分配行以后归组
if (dtResult.Rows.Count > 50)
{
for (int i = 0; i < dtResult.Rows.Count; i++)
{
drList.Add(dtResult.Rows[i]);
if ((i + 1) % 50 == 0)
{
arrlist.Add(drList);
drList = new List<DataRow>();
}
}
if (drList.Count > 0)
{
arrlist.Add(drList);
drList = new List<DataRow>();
}
}
else
{
for (int i = 0; i < dtResult.Rows.Count; i++)
{
drList.Add(dtResult.Rows[i]);
}
arrlist.Add(drList);
drList = new List<DataRow>();
}
string Path = MapPath("../document/SalesExcel.xls");
Workbook wb = new Workbook();
wb.Open(Path);
//Worksheet ws = wb.Worksheets[0];
wb.Worksheets[0].Name = FormNO;
if (arrlist.Count > 1)
{
wb.Worksheets[0].Name = FormNO + "01";
for (int i = 1; i < arrlist.Count; i++)
{
wb.Worksheets.Add(FormNO+"0"+(i+1));
wb.Worksheets[i].Copy(wb.Worksheets[0]);
}
}
for (int i = 0; i < arrlist.Count; i++)
{
List<DataRow> drListS = (List<DataRow>)(arrlist[i]);
for (int k = 0; k < drListS.Count; k++)
{
//写入数据
}
}
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.ContentEncoding = Encoding.UTF7;
string strFileName = SalesFormNO + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
strFileName = HttpUtility.UrlEncode(strFileName, System.Text.Encoding.UTF8);
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=\"" + strFileName + "\"");
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
HttpContext.Current.Response.BinaryWrite(wb.SaveToStream().ToArray());
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.End();
以上是我在一个项目中导出Excel的部分代码,具体思路是,获取数据源后分组,就比如120条数据,分成三组,第一组50条,第二组50条,第三组20条~~~·
然后遍历每组,循环产生Excel工作薄,有几个组就产生几个工作薄,并将数据写入对应的工作薄中。
采用的excel读写组件是Aspose.Cells.dll
希望对你有帮助
志池8
2012-07-05 · 超过20用户采纳过TA的回答
知道答主
回答量:101
采纳率:0%
帮助的人:61.8万
展开全部
数据源需要用游标来写,并写成存储过程,一个Output返回参数,用以返回页数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7c80ab3
2012-07-05
知道答主
回答量:29
采纳率:0%
帮助的人:19.6万
展开全部
你可以 把表 分别导出数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhubin_wyn
2012-07-05 · TA获得超过175个赞
知道小有建树答主
回答量:216
采纳率:100%
帮助的人:259万
展开全部
你的意思是有多少页,就导出多少个报表吧?其实它就是数据源不同而已。这个很简单,我可以帮到你!
更多追问追答
追问
怎么弄,求教
追答
你的qq多少,这个说起来还比较复杂!qq聊吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式