/*涉及的jar包
1)biframework.jar
用于实现分页功能
2)poi-3.7-20101029.jar:读取、创建、修改excle、word、ppt的Java API
Apache POI是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE复合文档格式(OLE2)的Java API。
用它可以使用Java读取和创建,修改MS Excel文件.而且,还可以使用Java读取和创建MS Word和MSPowerPoint文件。
Apache POI 提供Java操作Excel解决方案(适用于Excel97-2008)
HSSF:是POI工程对Excel 97(-2007)(.xls)文件操作的纯Java实现。
XSSF:是POI工程对Excel 2007 OOXML (.xlsx)文件操作的纯Java实现。
HWPF:提供读写Microsoft Word DOC格式档案的功能。
HSLF:提供读写Microsoft PowerPoint格式档案的功能。
HDGF:提供读Microsoft Visio格式档案的功能。
HPBF:提供读Microsoft Publisher格式档案的功能。
HSMF:提供读Microsoft Outlook格式档案的功能。
*/
1、查询结果导出到excle功能实现
<input type="button" value="数据导出" onclick="monitRulesExportexcel()"/>
2、js函数

  1. function monitRulesExportexcel() {
  2. var ruleDeclaration =document.getElementById("ruleDeclaration").value;// 规则说明
  3. var dealType = document.getElementById("dealType").value;// 类型
  4. var url= document.getElementById("monitRulesListFrom").action = "monitRulesAction.do?action=exportExcel&ruleDeclaration="
  5. + ruleDeclaration
  6. + "&dealType="
  7. + dealType;
  8. document.getElementById("monitRulesListFrom").submit();
  9. }

3、MonitRulesAction中的exportExcel方法

  1. public ModelAndView exportExcel (HttpServletRequest request,
  2. HttpServletResponse response,Object obj) throws Exception{
  3. response.setContentType("text/html;UTF-8");
  4. response.setCharacterEncoding("UTF-8");
  5. request.setCharacterEncoding("GBK");
  6. Paper paper = new Paper() ;
  7. String pageDirection = Tools.nulltostring((String) request.getParameter("pageDirection")) ;
  8. String currentPage = Tools.nulltostring((String) request.getParameter("currentPage"));
  9. ruleDeclaration=Tools.nulltostring(request.getParameter("ruleDeclaration"));
  10. dealType = Tools.nulltostring(request.getParameter("dealType"));
  11.  
  12. Map map=new HashMap();
  13. map.put("ruleDeclaration", ruleDeclaration);
  14. map.put("dealType", dealType);
  15. map.put("ruleDeclaration", ruleDeclaration);
  16. map.put("dealType", dealType);
  17.  
  18. List<Map<String,Object>> monitRulesList=service.getMonitRulesDataList(map,paper, currentPage,pageDirection, 5);
  19. System.out.println(monitRulesList.size());
  20. String[] titles=new String[]{"规则编码","金额","次数","统计天数","规则说明","类型","特征","标识"};
  21. //创建名称为:excle文件对象并设定该excle的sheet页对象名为“监测规则数据”
  22. HSSFWorkbook book=ExportExcel.creatWorkBook("监测规则数据");
  23. //获取"可疑交易监测规则数据"sheet对象
  24. HSSFSheet sheet=book.getSheet("监测规则数据");
  25.  
  26. //创建表头行
  27. HSSFRow row0 = sheet.createRow(0);
  28. //创建表头样式
  29. HSSFCellStyle titletyle=ExportExcel.creatTitleStyle(book);
  30. //给excle中第一行写入:列明信息
  31. for (int i = 0; i < titles.length; i++) {
  32. //createCell:创建单元格
  33. HSSFCell cell = row0.createCell(i);//创建第一行
  34. cell.setCellValue(titles[i]);
  35. cell.setCellStyle(titletyle);
  36. }
  37. //设置表头:所占行和列数信息
  38. for (int i = 0; i <titles.length; i++) {
  39. ExportExcel.mergeCell(sheet, 0, 1, i, i);//起始行、结束行、起始列、结束列
  40. }
  41. ExportExcel.exportExcelForSupplier(response, monitRulesList,MonitRulesExportBean.class,sheet.getSheetName(),book,2);
  42. return null;
  43. }

4、调用生成excle的工具类:ExportExcle.java

  1. import java.io.BufferedOutputStream;
  2. import java.io.File;
  3. import java.io.OutputStream;
  4. import java.lang.reflect.Field;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import javax.servlet.http.HttpServletResponse;
  8. import org.apache.poi.hssf.usermodel.HSSFCell;
  9. import org.apache.poi.hssf.usermodel.HSSFCellStyle;
  10. import org.apache.poi.hssf.usermodel.HSSFFont;
  11. import org.apache.poi.hssf.usermodel.HSSFRow;
  12. import org.apache.poi.hssf.usermodel.HSSFSheet;
  13. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  14. import org.apache.poi.hssf.util.HSSFColor;
  15. import org.apache.poi.ss.usermodel.CellStyle;
  16. import org.apache.poi.ss.util.CellRangeAddress;
  17.  
  18. /**
  19. * Excel 导出公共类
  20. */
  21. public class ExportExcel {
  22. //创建一个WOOKBOOK &SHEET
  23. public static HSSFWorkbook creatWorkBook(String filename){
  24. HSSFWorkbook workbook = new HSSFWorkbook();//创建Excel文件
  25. HSSFSheet sheet = workbook.createSheet(filename);//创建Excel的一个sheet
  26.  
  27. return workbook;
  28. }
  29. //单元格样式
  30. public static HSSFCellStyle creatCenterStyle(HSSFWorkbook workbook){
  31. HSSFCellStyle centerstyle = workbook.createCellStyle();
  32. centerstyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中
  33. centerstyle.setWrapText(true);//设置自动换行
  34. centerstyle.setFillBackgroundColor((short)13);
  35. return centerstyle;
  36. }
  37. //表头样式
  38. public static HSSFCellStyle creatTitleStyle(HSSFWorkbook workbook){
  39. HSSFCellStyle titletyle = workbook.createCellStyle();
  40. HSSFFont font = workbook.createFont();
  41. font.setColor(HSSFColor.RED.index);
  42.  
  43. titletyle.setFont(font);
  44. titletyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
  45. titletyle.setWrapText(true);
  46. return titletyle;
  47.  
  48. }
  49. //导出方法
  50. public static void exportExcelForSupplier(HttpServletResponse response,List ls,Class c,String sheetname,HSSFWorkbook workbook,int index)throws Exception{
  51. String filePath = null;
  52. File excelFilePath = null;
  53. String excelFileName = null;
  54. File tempExcelFile = null;
  55. OutputStream ouputStream=null;
  56. String fileName = "aaaa";
  57. response.reset();// 清空输出流
  58. response.setContentType("application vnd.ms-excel;charset=utf-8");
  59. response.setHeader("Content-disposition", "attachment;filename=auditdate.xls");
  60. HSSFSheet sheet=workbook.getSheet(sheetname);
  61. HSSFCellStyle centerstyle=ExportExcel.creatCenterStyle(workbook);
  62. Field[] fs = c.getDeclaredFields();
  63. //resultList是列表集合
  64. for (int i= 0; i<ls.size();i++) {
  65. HSSFRow row = sheet.createRow(i+index);//创建行
  66. row.setRowStyle(centerstyle);
  67. Object kybean=ls.get(i);
  68. for (int k = 0;k<fs.length;k++){
  69. Field f = fs[k];
  70. HSSFCell cells = row.createCell(k);
  71. f.setAccessible(true);
  72. cells.setCellValue((String)f.get(kybean));
  73. cells.setCellStyle(centerstyle);
  74. }
  75. }
  76. ouputStream = response.getOutputStream();
  77. // BufferedOutputStream bo=new BufferedOutputStream(ouputStream,12);
  78. // workbook.write(bo);
  79. workbook.write(ouputStream);
  80. ouputStream.flush();
  81. ouputStream.close();
  82.  
  83. }
  84. //合并单元格
  85. public static int mergeCell(HSSFSheet sheet,int firstRow,int lastRow,int firstColumn,int lastColumn){
  86. return sheet.addMergedRegion(new CellRangeAddress(firstRow,lastRow,firstColumn,lastColumn));
  87. }
  88. public static void main(String[] args) {
  89. List<List<Object>> ls=new ArrayList<List<Object>>();
  90. List<Object> list=new ArrayList<Object>();
  91. list.add("sdfd");
  92. list.add(111);
  93. ls.add(list);
  94. list.add(423423);
  95. list.add(0.444);
  96. ls.add(list);
  97. Object[]obj=ls.get(0).toArray();
  98. Object[]obj1=ls.get(1).toArray();
  99. }
  100. }

更多关于excle生成方法可参看博文

https://www.cnblogs.com/jiarui-zjb/p/9440797.html

https://www.cnblogs.com/jiarui-zjb/p/9439609.html

二、点击导出按钮创建excle写入内容后下载功能实现的更多相关文章

  1. Winforn中使用FastReport实现点击导出按钮PDF预览并弹出另存为对话框

    场景 FastReport安装包下载.安装.去除使用限制以及工具箱中添加控件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  2. JAVA创建并写入内容到xlsx文件

    首先需要在web项目中导入jxl.jar 包 //action中代码 public String downloadReport(){        String path = System.getPr ...

  3. python从命令窗口启动脚本 创建并写入内容到文件示例

    写入到文件示例: #!/usr/bin/env python3 from math import exp, log, sqrt import re from datetime import date, ...

  4. python之创建文件写入内容

    https://www.cnblogs.com/evablogs/p/7096686.html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 ...

  5. java创建文件写入内容,并实现下载该文件

    public void getText(){ response.setHeader("Content-Disposition", "attachment;filename ...

  6. 消息队列写入内容后,读出来的自动包裹了<string>标签,自定义格式化器解决该issue

    /// <summary> /// 该格式化器使输入即输出 /// </summary> public class StringFormatter : IMessageForm ...

  7. Java实现点击导出excel页面遮罩屏蔽,下载完成后解除遮罩

    一.问题场景 最近在做数据统计功能,需求是导出大数据量的excel,时间间隔较长,大概需要十秒左右,点击导出后,页面没有做任何处理,用户也不知道是否正在导出:如果没有做交互上的限制,用户可以一直点击导 ...

  8. win32 htmlayout点击按钮创建新窗口,以及按钮图片样式

    最近在做一个C++ win32的桌面图形程序,我不是C++程序员,做这个只是因为最近没什么java的活. windows api,之前接触的时候,还是大学,那时用这个开发打飞机游戏纯粹是娱乐.现在基本 ...

  9. 023医疗项目-模块二:药品目录的导入导出-从数据库中查出数据用XSSF导出excel并存放在虚拟目录最后下载(包括调试)

    我们要实现的效果:     进入到这个页面后,输入要查询的条件,查询出药品表的数据,然后按下导出按钮 ,就会在服务器的一个目录下生成一个药品表的excel表格.  点击"导出"之后 ...

随机推荐

  1. python开发基础作业01:模拟登陆系统

    随老男孩学习python mark 作业要求及提示:编写登录接口 ''' 练习程序:编写登录接口 1. 输入用户名和密码 2. 认证成功后显示欢迎信息 3. 输错三次后锁定 输入三次后退出,下次同样用 ...

  2. c# 调用c++sdk时结构体与byte数组互转

    /// <summary> /// 由结构体转换为byte数组 /// </summary> public static byte[] StructureToByte<T ...

  3. 在Ubuntu_meta 16.04中设置默认Python3.5的命令

    ubuntu_meta 默认是安装了python2.7 和python3.5两个版本 查看ubuntu的python版本,默认版本是python2.7 输入:python 直接执行这两个命令即可: s ...

  4. 一大波新款iPhone跟安卓厂商抢夺5G市场

    据外媒最新报道称,苹果已经基本完成了今年iPhone的推新阵容,其发布的多款新机中,将涵盖399美元-1149美元的售价区间,特别是5G手机,起步价可能会很亲民,其目的在于进一步占据市场. 今年苹果将 ...

  5. Dart语言学习(十五) Dart函数方法

    Dart函数方法可分为两类: 一.内置方法/函数: print(); 二.自定义方法: 自定义方法的基本格式: 返回类型 方法名称(参数1,参数2,...){ 方法体 return 返回值; } vo ...

  6. 07 DTFT

    DTFT 连续时间傅里叶变换(CTFT) 连续时间傅里叶变换的定义为: \[ X(j\Omega)=\int_{-\infty}^{\infty}x_a(t)e^{-j\Omega t}dt \] 其 ...

  7. springMVC是如何实现参数封装和自动返回Json的

    HTTP 请求和响应是基于文本的,意味着浏览器和服务器通过交换原始文本进行通信.但是,使用 Spring,controller 类中的方法返回纯 ‘String’ 类型和域模型(或其他 Java 内建 ...

  8. hdoj6703 2019 CCPC网络选拔赛 1002 array

    题意 description You are given an array a1,a2,...,an(∀i∈[1,n],1≤ai≤n). Initially, each element of the ...

  9. Spring Boot Security JWT 整合实现前后端分离认证示例

    前面两章节我们介绍了 Spring Boot Security 快速入门 和 Spring Boot JWT 快速入门,本章节使用 JWT 和 Spring Boot Security 构件一个前后端 ...

  10. ES的基本概念

    elasticsearch 的索引与文档是开发关注的视角:节点.集群.分片是运维关注的视角 elasticearch 文档的介绍 - elasticearch 是面向文档的,文档是所有可搜索数据的最小 ...