Npoi导出Excel 实战篇(Webform)

开篇语

废话不多说,直接上遇到的问题

需求:在这个界面点击导出,导出页面数据,苦于没有做过webfrom项目,弄了半天还是没想到原生态的好方法,所以在网上看了下有没有导出的好例子,结果发现有人推荐使用Npoi,抱着强烈的好奇心,就去查了下这个东东,发现果然强大,哈哈,里面集成了很多东西,下面直接进入解决问题正题:

实现过程

①发现项目里面接口方法返回DataTable是带参数的,所以新增了一个无参数的方法

②实现这个方法,重点是将查询到的结果集放大DataTable中

③先去官网:http://npoi.codeplex.com/ 下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用。[因为我的项目就用到了excel导出,所以只添加了这两个dll]

       

④执行点击事件即可[本项目是点击导出Excel时,执行button3的点击事件]

 

 ⑤添加方法(本方法可通用,其中rs是申明的一个全局DataTable ,将接口调用的查询数据库的方法直接返回给rs)

 1   NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
 2              NPOI.SS.UserModel.ISheet sheet = book.CreateSheet("Sheet1");
 3             //设置列的信息
 4 
 5              NPOI.SS.UserModel.IRow headerrow = sheet.CreateRow(0);
 6              ICellStyle style = book.CreateCellStyle();
 7              style.Alignment = HorizontalAlignment.Center;
 8              style.VerticalAlignment = VerticalAlignment.Center;
 9             rs =CMSModelManager.SendInfoManageDAO.GetFirstSendInfoManageByIds();
10             IRow rowHead = sheet.CreateRow(0);
11             //填写表头
12             for (int i = 0; i < rs.Columns.Count; i++)
13             {
14                 rowHead.CreateCell(i, CellType.String).SetCellValue(rs.Columns[i].ColumnName.ToString());
15             }
16 
17              //填写内容
18              for (int i = 0; i < rs.Rows.Count; i++)
19              {
20                  IRow row = sheet.CreateRow(i + 1);
21                  for (int j = 0; j < rs.Columns.Count; j++)
22                  {
23                      row.CreateCell(j, CellType.String).SetCellValue(rs.Rows[i][j].ToString());
24                  }
25              }
26              MemoryStream ms = new MemoryStream();
27              book.Write(ms);
28              Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", HttpUtility.UrlEncode("寄件信息表" + "_" + DateTime.Now.ToString("yyyy-MM-dd"), System.Text.Encoding.UTF8)));
29              Response.BinaryWrite(ms.ToArray());
30              Response.End();
31              book = null;
32              ms.Close();
33              ms.Dispose();
View Code

⑥效果

 

   本文完

 

  • 感谢你的阅读。如果你觉得这篇文章对你有帮助或者有启发,就请推荐一下吧~你的精神支持是博主强大的写作动力。欢迎转载!
  • 博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高(其实是个菜B),不足和错误之处在所难免,希望大家能够批评指出。
  • 欢迎加入.NET 从入门到精通技术讨论群→523490820 期待你的加入
  • 不舍得打乱,就永远学不会复原。被人嘲笑的梦想,才更有实现的价值。
  • 我的博客:http://www.cnblogs.com/zhangxiaoyong/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值