zoukankan      html  css  js  c++  java
  • 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

    ⑥效果

     

       本文完

  • 相关阅读:
    JavaScript的关键点
    博客开始
    CCF
    java-CCF+杂七杂八
    【软件工程】需求分析V2再整理
    汇编 书上实验
    组原2
    chrome主页被绑架
    【软件工程】乱的一遭
    【我希望我能鼓起勇气】汇编语言
  • 原文地址:https://www.cnblogs.com/zhangxiaoyong/p/5754547.html
Copyright © 2011-2022 走看看