/*涉及的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函数

function monitRulesExportexcel() {
var ruleDeclaration =document.getElementById("ruleDeclaration").value;// 规则说明
var dealType = document.getElementById("dealType").value;// 类型
var url= document.getElementById("monitRulesListFrom").action = "monitRulesAction.do?action=exportExcel&ruleDeclaration="
+ ruleDeclaration
+ "&dealType="
+ dealType;
document.getElementById("monitRulesListFrom").submit();
}

3、MonitRulesAction中的exportExcel方法

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

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

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.util.CellRangeAddress; /**
* Excel 导出公共类
*/
public class ExportExcel {
//创建一个WOOKBOOK &SHEET
public static HSSFWorkbook creatWorkBook(String filename){
HSSFWorkbook workbook = new HSSFWorkbook();//创建Excel文件
HSSFSheet sheet = workbook.createSheet(filename);//创建Excel的一个sheet return workbook;
}
//单元格样式
public static HSSFCellStyle creatCenterStyle(HSSFWorkbook workbook){
HSSFCellStyle centerstyle = workbook.createCellStyle();
centerstyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中
centerstyle.setWrapText(true);//设置自动换行
centerstyle.setFillBackgroundColor((short)13);
return centerstyle;
}
//表头样式
public static HSSFCellStyle creatTitleStyle(HSSFWorkbook workbook){
HSSFCellStyle titletyle = workbook.createCellStyle();
HSSFFont font = workbook.createFont();
font.setColor(HSSFColor.RED.index); titletyle.setFont(font);
titletyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
titletyle.setWrapText(true);
return titletyle; }
//导出方法
public static void exportExcelForSupplier(HttpServletResponse response,List ls,Class c,String sheetname,HSSFWorkbook workbook,int index)throws Exception{
String filePath = null;
File excelFilePath = null;
String excelFileName = null;
File tempExcelFile = null;
OutputStream ouputStream=null;
String fileName = "aaaa";
response.reset();// 清空输出流
response.setContentType("application vnd.ms-excel;charset=utf-8");
response.setHeader("Content-disposition", "attachment;filename=auditdate.xls");
HSSFSheet sheet=workbook.getSheet(sheetname);
HSSFCellStyle centerstyle=ExportExcel.creatCenterStyle(workbook);
Field[] fs = c.getDeclaredFields();
//resultList是列表集合
for (int i= 0; i<ls.size();i++) {
HSSFRow row = sheet.createRow(i+index);//创建行
row.setRowStyle(centerstyle);
Object kybean=ls.get(i);
for (int k = 0;k<fs.length;k++){
Field f = fs[k];
HSSFCell cells = row.createCell(k);
f.setAccessible(true);
cells.setCellValue((String)f.get(kybean));
cells.setCellStyle(centerstyle);
}
}
ouputStream = response.getOutputStream();
// BufferedOutputStream bo=new BufferedOutputStream(ouputStream,12);
// workbook.write(bo);
workbook.write(ouputStream);
ouputStream.flush();
ouputStream.close(); }
//合并单元格
public static int mergeCell(HSSFSheet sheet,int firstRow,int lastRow,int firstColumn,int lastColumn){
return sheet.addMergedRegion(new CellRangeAddress(firstRow,lastRow,firstColumn,lastColumn));
}
public static void main(String[] args) {
List<List<Object>> ls=new ArrayList<List<Object>>();
List<Object> list=new ArrayList<Object>();
list.add("sdfd");
list.add(111);
ls.add(list);
list.add(423423);
list.add(0.444);
ls.add(list);
Object[]obj=ls.get(0).toArray();
Object[]obj1=ls.get(1).toArray();
}
}

更多关于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. Java连载81-枚举类型,生成五个不重复的随机数,集合简介

    一.枚举类型 1.枚举类型的格式就是enum+枚举类型的名称,可见下面的例子. package com.bjpowernode.java_learning; ​ public class D81_1_ ...

  2. dfs & bfs总结

    dfs 最简单的三种形式递归总结 bfs 百度https://baike.baidu.com/item/%E5%AE%BD%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7 ...

  3. 吴裕雄--天生自然Numpy库学习笔记:NumPy 广播(Broadcast)

    广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 如果两个数组 a 和 b 形状相同,即满足 a.shape == ...

  4. leetcode: 0204 完成的

    目录 大纲:0204 完成的 notes ✅1051 高度检查器 ✅ 728 自除数 brute c解答: java switch 语句 java api: array 直接有 length 属性 , ...

  5. 并行效果&迭代器

    具体文章:ALEX的文章 https://www.cnblogs.com/alex3714/articles/5765046.html 串行的并行效果: import time def consume ...

  6. Python安装numpy,pandas慢,超时报错,下载不了的解决方法

    由于python的默认源是国外的,所以下载的时候会很慢,甚至会出现超时下载失败,提供两个解决方法 1.设置pip的超时限制 打开cmd 输入pip --default-timeout=100 inst ...

  7. device supports x86 but apk only supports armeabi-v7a问题解决

    我们可以在build.gradle中有ndk这段代码,只要在后面加上“x86”,再sync now一下,就发现可以运行了. ndk { abiFilters "armeabi-v7a&quo ...

  8. 实现纸牌游戏的随机抽牌洗牌过程(item系列几个内置方法的实例)

    实现纸牌游戏的随机抽牌洗牌过程(item系列几个内置方法的实例) 1.namedtuple:命名元组,可以创建一个没有方法只有属性的类 from collections import namedtup ...

  9. 一个不会coding的girl Linux日常之命令awk

    Linux日常之命令awk 参考:http://www.zsythink.net/archives/tag/awk/ 一. 命令awk简介 1. awk是一种编程语言,用于对文本和数据进行处理的 2. ...

  10. python笔记心得

    1.字典的映射 day=10# def get_sunday():# return 'Sunday'# def get_monday():# return 'monday'# def get_tues ...