//导出
@RequestMapping(value = "/export")
public void poizip(HttpServletResponse response,HttpServletRequest request, RycCustomer rycCustomer) throws Exception {ServletOutputStream out = response.getOutputStream();//压缩输出流ZipOutputStream zipOutputStream = new ZipOutputStream(out);HSSFWorkbook wb=null;try {for (int i = 0; i < 2; i++) {//创建工作簿String[] array = {"标题1","标题2","标题3"};List<String> titles = new ArrayList();for (String s : array) {titles.add(s);}//查询数据List<RycCustomer> entityList = rycCustomerService.getListRycCustomer(rycCustomer);System.out.println(entityList.size());wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("sheet" + i);//表头内容showTitle(sheet,array.length-1,wb);List<List<Object>> rows = new ArrayList();for (RycCustomer carClaims : entityList) {List<Object> row = new ArrayList();row.add(carClaims.getS1());row.add(carClaims.getI2());row.add(carClaims.getI3());rows.add(row);//将查询到的值放到集合中}writeExcel(wb, sheet,titles,  rows);response.setContentType("application/octet-stream; charset=utf-8");response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("测试.zip", "UTF-8"));//重点开始,创建压缩文件ZipEntry z = new ZipEntry(i + ".xlsx");zipOutputStream.putNextEntry(z);//写入一个压缩文件wb.write(zipOutputStream);}zipOutputStream.flush();} catch (IOException e) {e.printStackTrace();} finally {//注意关闭顺序,否则可能文件错误if (zipOutputStream != null) {zipOutputStream.close();}if (out != null) {out.close();}}
}/*** 表显示字段* @param wb* @param sheet* @param* @return*/
private static int writeExcel(HSSFWorkbook wb, HSSFSheet sheet,List<String> titles, List<List<Object>> rows) {int rowIndex = 0;rowIndex = writeTitlesToExcel(wb, sheet, titles);rowIndex = writeRowsToExcel(wb, sheet, rows, rowIndex);autoSizeColumns(sheet, titles.size() + 1);return rowIndex;
}//表头样式
private static void showTitle(HSSFSheet sheet,int amount,HSSFWorkbook wb){HSSFCellStyle cellStyle = wb.createCellStyle();HSSFFont font = wb.createFont();//设置字体首先要先引入一个字体的接口font.setFontHeightInPoints((short) 14);//设置字体高度?24大小可修改(short)不改font.setFontName("simsun");//设置什么样式的字体比如宋体什么的 Courier new字体样式可修改font.setItalic(false);//倾斜字体//设置粗体font.setBoldweight(Short.MAX_VALUE);cellStyle.setFont(font);//第一行标题//合并excel第一行CellRangeAddress region = new CellRangeAddress(0, 0, 0, amount);sheet.addMergedRegion(region);HSSFRow oneRow = sheet.createRow(0);oneRow.setHeightInPoints(25);HSSFCell cell = oneRow.createCell(0);cell.setCellValue("标题");cell.setCellStyle(cellStyle);//********************************************************HSSFCellStyle cellStyle2 = wb.createCellStyle();HSSFFont font2 = wb.createFont();//设置字体首先要先引入一个字体的接口font2.setFontHeightInPoints((short) 10);//设置字体高度?24大小可修改(short)不改font2.setFontName("simsun");//设置什么样式的字体比如宋体什么的 Courier new字体样式可修改font2.setItalic(false);//倾斜字体font2.setColor(HSSFFont.COLOR_RED);cellStyle2.setFont(font2);//换行的话加一个\n就可以但是在样式中要设置他可以换行cellStyle2.setWrapText(true);//设置可以换行String remark="测试测试测试";//合并第二行单元格,加一些说明 remarkCellRangeAddress region2 = new CellRangeAddress(1, 1, 0, amount);sheet.addMergedRegion(region2);HSSFRow twoRow = sheet.createRow(1);twoRow.setHeightInPoints(100);HSSFCell cel2 = twoRow.createCell(0);cel2.setCellValue(remark);cel2.setCellStyle(cellStyle2);
}//列标题
private static int writeTitlesToExcel(HSSFWorkbook wb, HSSFSheet sheet, List<String> titles) {int rowIndex = 2;int colIndex = 0;Font titleFont = wb.createFont();//设置字体titleFont.setFontName("simsun");//设置粗体titleFont.setBoldweight(Short.MAX_VALUE);//设置字号titleFont.setFontHeightInPoints((short) 14);//设置颜色titleFont.setColor(IndexedColors.BLACK.index);HSSFCellStyle titleStyle = wb.createCellStyle();//水平居中titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//垂直居中titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//设置图案颜色//设置填充方案titleStyle.setFillForegroundColor(HSSFColor.YELLOW.index);//设置自定义填充颜色   HSSFPalette customPalette=wb.getCustomPalette();customPalette.setColorAtIndex(HSSFColor.LIME.index, (byte) 242,(byte) 242, (byte) 242);//设置图案样式titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);titleStyle.setFont(titleFont);setBorder(titleStyle);Row titleRow = sheet.createRow(rowIndex);titleRow.setHeightInPoints(50);colIndex = 0;for (String field : titles) {Cell cell = titleRow.createCell(colIndex);cell.setCellValue(field);cell.setCellStyle(titleStyle);colIndex++;}rowIndex++;return rowIndex;
}/*** 设置内容** @param wb* @param sheet* @param rows* @param rowIndex* @return*/
private static int writeRowsToExcel(HSSFWorkbook wb, HSSFSheet sheet, List<List<Object>> rows, int rowIndex) {int colIndex;Font dataFont = wb.createFont();dataFont.setFontName("simsun");dataFont.setFontHeightInPoints((short) 12);dataFont.setColor(IndexedColors.BLACK.index);HSSFCellStyle dataStyle = wb.createCellStyle();dataStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);dataStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);dataStyle.setFont(dataFont);setBorder(dataStyle);for (List<Object> rowData : rows) {Row dataRow = sheet.createRow(rowIndex);dataRow.setHeightInPoints(25);colIndex = 0;for (Object cellData : rowData) {Cell cell = dataRow.createCell(colIndex);if (cellData != null) {cell.setCellValue(cellData.toString());} else {cell.setCellValue("");}cell.setCellStyle(dataStyle);colIndex++;}rowIndex++;}return rowIndex;
}/*** 自动调整列宽** @param sheet* @param columnNumber*/
private static void autoSizeColumns(Sheet sheet, int columnNumber) {for (int i = 0; i < columnNumber; i++) {int orgWidth = sheet.getColumnWidth(i)+300;sheet.autoSizeColumn(i, true);int newWidth = (int) (sheet.getColumnWidth(i) + 300);if (newWidth > orgWidth) {sheet.setColumnWidth(i, newWidth);} else {sheet.setColumnWidth(i, orgWidth);}}
}/*** 设置边框** @param style*/
private static void setBorder(HSSFCellStyle style) {style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);style.setWrapText(true);//设置自动换行}

Java导出多个excel并压缩下载相关推荐

  1. Java导出多个excel压缩成zip下载

    Java导出多个excel压缩成zip下载 maven <!--hutoos工具类根据需要可以导入不同的模块,我这里是导入全部的模块--><dependency><gro ...

  2. Java导出数据到Excel文件

    Java导出数据到Excel文件 前言 如何导出 导出的基本流程 测试结果 测试数据及结果 测试代码 ExcelExportUtil.class 遇到的问题 lombok的问题 解决 Cell.set ...

  3. java导出数据到excel模板_springboot+jxls 根据Excel模板 填写数据并导出

    项目结构 pom.xml net.sf.jxls jxls-core 1.0.6compile 学生信息表模板: ExcelUtiles package cn.bdqn.utils;import ne ...

  4. 使用Java导出数据到Excel

    一.excel数据导出限制 1. Excel 2003及以下的版本.一张表最大支持**65536**行数据,256列.也就是说excel2003完全不可能满足百万数据导出的需求. 2. Excel 2 ...

  5. Java 导出CSV文件及实现web下载CSV

    本文主要介绍Java 导出CSV文件到本地及实现web下载CSV. 1.Java 导出CSV文件到本地 csvWriter: package com.csvio;import java.io.Buff ...

  6. java Itextpdf 图片转pdf并压缩下载至浏览器

    注:图片存放在服务器D盘指定目录下,该目录URL存放于数据库表中 maven项目 jdk1.7 <!-- itextpdf --> <dependency><groupI ...

  7. java导出数据到excel表格的最简单实现

    导出excel整理 开发中难免会遇到要导出数据到excel的,网上有很多方法,但是看起来都很复杂的样子,写得又非常多代码,让人望而止步.我做一个简单的导出excel表格功能.这是我在工作上用到的. 1 ...

  8. java导出大数据excel表格,导出数据

    常规的java导出excel表格最大的数据量是65535行. package com.sf.module.timeManagement.biz; import java.io.ByteArrayInp ...

  9. Java导出多个excel并打包压缩成.zip文件

    1.先获取到数据,并将数据导出excel到指定位置 public void downPoliceZip(WorksitePoliceApiInfo worksitePoliceApiInfo) thr ...

最新文章

  1. 【Linux】eclipse juno 边框过大的调整方法
  2. 敏捷个人:激励   2011-11-26期
  3. Redis 哨兵模式 带密码单机
  4. 销售组织与工厂对照表
  5. drtek收音机使用说明_【火腿实验室】使用双FSL中波环形天线消除同频干扰电台信号...
  6. 使用nio多线程下载网络文件实例
  7. CTO丢给我中台总结:阿里的“数据+业务”双中台架构
  8. QMap排序方法运用实例
  9. Matlab:实现菲涅尔矩形孔衍射仿真
  10. 《统计决策论及贝叶斯分析》
  11. java程序将asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv,mpeg,mpe,wmv9,rm,rmvb转MP4
  12. linux 使用icc运行tcl,Tcl在ICC2中的应用:定义一个proc,实现将一个cell直接替换成另一个功能不等价的cell...
  13. filco linux 蓝牙适配器,filco蓝牙配对教程,新买了一个蓝牙无线键盘fi
  14. c# 回调先进先出_Stack和Queue:后进先出和先进先出
  15. 【ENVI】基于Landsat遥感影像的盐城市土地利用信息提取
  16. <C++>初识多态,剖析virtual关键字
  17. 使用Graphics2D给图片加水印(图片+图标)
  18. CC2530F256RHAR 射频芯片 无线收发器芯片 ZigBee 解决方案
  19. 赢在2022,面试官常问的软件测试面试题总结
  20. 如何调试Kubernetes集群中的网络延迟问题

热门文章

  1. [堆+贪心] CF596C. Wilbur and Points
  2. kmspico_setup.exe运行提示系统资源不足,无法完成请求的服务
  3. Unity3D 如何干净的解除父子关系
  4. kindle如何设置不闪屏_疑问解答 | Kindle翻页为什么闪屏?
  5. vue element ui 利用xslx导出文档表格功能(纯前端导出下载文档)
  6. 美国的非农数据一般会在几点发布
  7. 大招流的英雄没法子混了啊!----- dota 6.72新英雄
  8. 我是如何通过阿里面试的?
  9. Xtend:Android平台的Swift语言
  10. 华硕主板Z97-A无法识别intel M.2 NVME固态硬盘的解决方案