pom.xml依赖

<!--POI Excel表格导出依赖-->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version>
</dependency>

具体实现根据自己需求修改,代码:

import com.open.capacity.common.code.C00;
import com.open.capacity.common.envm.cate.ProjExeConditionCate;
import com.open.capacity.common.envm.recid.DictId;
import com.open.capacity.common.exception.controller.ControllerException;
import com.open.capacity.common.exception.service.ServiceException;
import com.open.capacity.common.util.SysUserUtil;
import com.open.capacity.common.web.Result;
import com.open.capacity.project.dao.ProjExeConditionDao;
import com.open.capacity.project.dao.ProjSummaryDao;
import com.open.capacity.project.dao.ProjUserInfoDao;
import com.open.capacity.project.entity.ProjExeCondition;
import com.open.capacity.project.entity.ProjExeConditionDTO;
import com.open.capacity.project.entity.ProjtSitra;
import com.open.capacity.project.feign.ProjUserFeignClient;
import com.open.capacity.project.service.ProjExeConditionService;
import com.open.capacity.project.util.PageResultUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.open.capacity.common.web.PageResult;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.collections4.MapUtils;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@Service
public class ProjExeConditionServiceImpl  implements ProjExeConditionService {/*** 导出项目执行情况(月度执行情况、季度执行情况) - 统计报表(excel)** @param params   查询条件* @param request  request* @param response response* @return :* @author : hjk*/@Overridepublic Result listStaticImportExcel(Map<String, Object> params, HttpServletRequest request, HttpServletResponse response) {try {//其他查询逻辑//ProjExeConditionDTO projExeConditionDTO = new ProjExeConditionDTO();if (MapUtils.getInteger(params, "projDataId") != null && MapUtils.getInteger(params, "projDataId") != null) {projExeConditionDTO = projExeConditionDao.getProjInfo(MapUtils.getInteger(params, "projDataId"));} else {projExeConditionDTO.setProjUnit(MapUtils.getString(params, "projUnit"));}projExeConditionDTO.setFillTime(MapUtils.getString(params, "startTime"));//分页查询 === BEGIN === 设置分页信息,分别是当前页数和每页显示的总记录数【记住:必须在mapper接口中的方法执行之前设置该分页信息,中间不能有其他查询执行】if (MapUtils.getInteger(params, "page") != null && MapUtils.getInteger(params, "limit") != null) {PageHelper.startPage(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"), true);}params.put("dictId", DictId.CONDITION_CATE.getCode());List<ProjExeConditionDTO> list = projExeConditionDao.listStatic(params);//二、 数据转成excelrequest.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");response.setContentType("application/x-download");String fileName = "科技计划项目执行情况表.xls";fileName = URLEncoder.encode(fileName, "UTF-8");response.addHeader("Content-Disposition", "attachment;filename=" + fileName);// 第一步:定义一个新的工作簿XSSFWorkbook wb = new XSSFWorkbook();// 第二步:创建一个Sheet页XSSFSheet sheet = wb.createSheet("科技计划项目执行情况表");//设置行高sheet.setDefaultRowHeight((short) (2 * 256));//设置列宽sheet.setColumnWidth(0, 5500);sheet.setColumnWidth(1, 5500);sheet.setColumnWidth(3, 3500);sheet.setColumnWidth(4, 4500);sheet.setColumnWidth(10, 5500);sheet.setColumnWidth(11, 5500);sheet.setColumnWidth(12, 5500);sheet.setColumnWidth(13, 6500);XSSFFont xssfFont = wb.createFont();xssfFont.setFontName("宋体");xssfFont.setFontHeightInPoints((short) 16);//指定合并开始行、合并结束行 合并开始列、合并结束列CellRangeAddress rangeAddress = new CellRangeAddress(0, 0, 0, 13);//添加要合并地址到表格sheet.addMergedRegion(rangeAddress);XSSFRow row = sheet.createRow(0);XSSFCell cell = row.createCell(0);cell.setCellValue("科技计划项目执行情况表");//创建样式对象CellStyle cellStyle = wb.createCellStyle();//设置样式对齐方式:水平\垂直居中cellStyle.setAlignment(HorizontalAlignment.CENTER);cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//设置自动换行cellStyle.setWrapText(true);//为指定单元格设定样式cell.setCellStyle(cellStyle);rangeAddress = new CellRangeAddress(1, 1, 0, 1);//添加要合并地址到表格sheet.addMergedRegion(rangeAddress);row = sheet.createRow(1);cell = row.createCell(0);cell.setCellValue("填报单位(部门):");//将样式放入Cell对象中cell.setCellStyle(cellStyle);rangeAddress = new CellRangeAddress(1, 1, 2, 5);//添加要合并地址到表格sheet.addMergedRegion(rangeAddress);cell = row.createCell(2);if (StringUtils.isBlank(projExeConditionDTO.getProjUnit())){cell.setCellValue("");} else {cell.setCellValue(projExeConditionDTO.getProjUnit());}//将样式放入Cell对象中cell.setCellStyle(cellStyle);rangeAddress = new CellRangeAddress(1, 1, 6, 9);//添加要合并地址到表格sheet.addMergedRegion(rangeAddress);cell = row.createCell(6);cell.setCellValue("填报时间:");//将样式放入Cell对象中cell.setCellStyle(cellStyle);rangeAddress = new CellRangeAddress(1, 1, 10, 13);//添加要合并地址到表格sheet.addMergedRegion(rangeAddress);cell = row.createCell(10);if (MapUtils.getString(params, "startTime") != null && MapUtils.getString(params, "startTime") != ""){cell.setCellValue(MapUtils.getString(params, "startTime"));} else {cell.setCellValue("");}//将样式放入Cell对象中cell.setCellStyle(cellStyle);rangeAddress = new CellRangeAddress(2, 3, 0, 0);//添加要合并地址到表格sheet.addMergedRegion(rangeAddress);row = sheet.createRow(2);cell = row.createCell(0);cell.setCellValue("编号");//将样式放入Cell对象中cell.setCellStyle(cellStyle);rangeAddress = new CellRangeAddress(2, 3, 1, 1);//添加要合并地址到表格sheet.addMergedRegion(rangeAddress);cell = row.createCell(1);cell.setCellValue("项目名称");//将样式放入Cell对象中cell.setCellStyle(cellStyle);rangeAddress = new CellRangeAddress(2, 3, 2, 2);//添加要合并地址到表格sheet.addMergedRegion(rangeAddress);cell = row.createCell(2);cell.setCellValue("项目状态");//将样式放入Cell对象中cell.setCellStyle(cellStyle);rangeAddress = new CellRangeAddress(2, 2, 3, 4);//添加要合并地址到表格sheet.addMergedRegion(rangeAddress);cell = row.createCell(3);cell.setCellValue("项目经费使用情况");//将样式放入Cell对象中cell.setCellStyle(cellStyle);rangeAddress = new CellRangeAddress(2, 2, 5, 7);//添加要合并地址到表格sheet.addMergedRegion(rangeAddress);cell = row.createCell(5);cell.setCellValue("项目资料审批情况");//将样式放入Cell对象中cell.setCellStyle(cellStyle);rangeAddress = new CellRangeAddress(2, 2, 8, 9);//添加要合并地址到表格sheet.addMergedRegion(rangeAddress);cell = row.createCell(8);cell.setCellValue("项目成果审查验收情况");//将样式放入Cell对象中cell.setCellStyle(cellStyle);rangeAddress = new CellRangeAddress(2, 2, 10, 12);//添加要合并地址到表格sheet.addMergedRegion(rangeAddress);cell = row.createCell(10);cell.setCellValue("项目实施进展情况简述");//将样式放入Cell对象中cell.setCellStyle(cellStyle);rangeAddress = new CellRangeAddress(2, 3, 13, 13);//添加要合并地址到表格sheet.addMergedRegion(rangeAddress);cell = row.createCell(13);cell.setCellValue("备注");//将样式放入Cell对象中cell.setCellStyle(cellStyle);//项目经费使用情况row = sheet.createRow(3);cell = row.createCell(3);if (MapUtils.getInteger(params, "fillTimeCate") == 1) {cell.setCellValue("本月使用经费(万元)");} else {cell.setCellValue("本季度使用经费(万元)");}//将样式放入Cell对象中cell.setCellStyle(cellStyle);cell = row.createCell(4);cell.setCellValue("全年累计使用经费(万元)");//将样式放入Cell对象中cell.setCellStyle(cellStyle);//项目资料审批情况cell = row.createCell(5);cell.setCellValue("立项申报书");//将样式放入Cell对象中cell.setCellStyle(cellStyle);cell = row.createCell(6);cell.setCellValue("实施方案");//将样式放入Cell对象中cell.setCellStyle(cellStyle);cell = row.createCell(7);cell.setCellValue("合同");//将样式放入Cell对象中cell.setCellStyle(cellStyle);//项目成果审查验收情况cell = row.createCell(8);cell.setCellValue("项目总结");//将样式放入Cell对象中cell.setCellStyle(cellStyle);cell = row.createCell(9);cell.setCellValue("项目结题");//将样式放入Cell对象中cell.setCellStyle(cellStyle);//项目实施进展情况简述cell = row.createCell(10);if (MapUtils.getInteger(params, "fillTimeCate") == 1) {cell.setCellValue("本月主要完成研究内容及存在问题");} else {cell.setCellValue("本季度主要完成研究内容及存在问题");}//将样式放入Cell对象中cell.setCellStyle(cellStyle);cell = row.createCell(11);cell.setCellValue("取得的主要成效及相关指标完成情况");//将样式放入Cell对象中cell.setCellStyle(cellStyle);cell = row.createCell(12);cell.setCellValue("下一步工作打算");//将样式放入Cell对象中cell.setCellStyle(cellStyle);if (!list.isEmpty()){XSSFRow rows;XSSFCell cells;for (int i = 0; i < list.size(); i++) {// 第三步:在这个sheet页里创建一行rows = sheet.createRow(i+4);// 第四步:在该行创建一个单元格cells = rows.createCell(0);// 第五步:在该单元格里设置值//项目编号cells.setCellValue(list.get(i).getProjCode());cells.setCellStyle(cellStyle);//项目名称cells = rows.createCell(1);cells.setCellValue(list.get(i).getProjName());cells.setCellStyle(cellStyle);//项目状态名称cells = rows.createCell(2);cells.setCellValue(list.get(i).getConditionCateName());cells.setCellStyle(cellStyle);//本月/季使用经费cells = rows.createCell(3);cells.setCellValue(list.get(i).getExpenditure().toString());cells.setCellStyle(cellStyle);//全年累计使用经费cells = rows.createCell(4);cells.setCellValue(list.get(i).getYearExpenditure().toString());cells.setCellStyle(cellStyle);//立项申报书cells = rows.createCell(5);if (list.get(i).getProjectDeclaration().equals(true)){cells.setCellValue("√");} else {cells.setCellValue("——");}cells.setCellStyle(cellStyle);//实施方案cells = rows.createCell(6);if (list.get(i).getEmbodiment().equals(true)){cells.setCellValue("√");} else {cells.setCellValue("——");}cells.setCellStyle(cellStyle);//合同cells = rows.createCell(7);if (list.get(i).getContract().equals(true)){cells.setCellValue("√");} else {cells.setCellValue("——");}cells.setCellStyle(cellStyle);//项目总结cells = rows.createCell(8);if (list.get(i).getProjSummary().equals(true)){cells.setCellValue("√");} else {cells.setCellValue("——");}cells.setCellStyle(cellStyle);//项目结题cells = rows.createCell(9);if (list.get(i).getProjConclusion().equals(true)){cells.setCellValue("√");} else {cells.setCellValue("——");}cells.setCellStyle(cellStyle);//存在问题cells = rows.createCell(10);cells.setCellValue(list.get(i).getExistingProblem());cells.setCellStyle(cellStyle);//完成情况cells = rows.createCell(11);cells.setCellValue(list.get(i).getCompletion());cells.setCellStyle(cellStyle);//下一步工作计划cells = rows.createCell(12);cells.setCellValue(list.get(i).getNextWorkPlan());cells.setCellStyle(cellStyle);//备注cells = rows.createCell(13);cells.setCellValue(list.get(i).getRemark());cells.setCellStyle(cellStyle);}}//将数据传到浏览器OutputStream out = response.getOutputStream();wb.write(out);out.close();wb.close();return Result.succeed(0, "导出成功");} catch (ServiceException e) {throw new ControllerException(e);} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}//分页查询 === END ===return Result.failedWith(null, C00.C0003.getCode(), "暂无数据");}}

因项目原因就不放展示图片了

java 使用POI导出复杂excel表格,通过浏览器下载相关推荐

  1. java使用poi读取存储excel表格,包括xls和xlsx格式

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用poi读取存储excel表格,包括xls和xlsx格式. 需要导入的包 poi-3.14.jar poi-ooxml-3.14.jar ...

  2. Java的poi导出的excel不能超过256列的解决办法

    Java的poi导出的excel不能超过256列的解决办法 背景 1.现在的情况 2.解决办法 背景 导出时如果列超过256导出就会报错,现在进行解决 1.现在的情况 excel文件名以.xls结尾 ...

  3. java poi 数据透视,java 利用poi导出默认以表格展示的excel透视表

    前言: 从前,我是一个前端程序猿,怀着对打通任(前)督(后)二(开)脉(发)的梦想转了后端,自学两礼拜java+spring全家桶,直接上项目实战.最近接到一需求:将业务数据导出一张透视表. 需求开发 ...

  4. POI导出读取Excel表格讲解

    文章目录 一.POI是什么? Apache POI介绍 EasyExcel介绍 二.常用信息 三.导出Excel表具体操作 1.POI-Excel写 2.大文件写数据 3.大文件写SXSSF 四.读E ...

  5. 阿里开源(EasyExcel):使用Java将数据导出为Excel表格、带样式----》java web下载 Excel文件

    目录 一.技术选型 二.实现过程 1.导入依赖 2.编写工具类 EasyExcelUtil 3.公用参数类 EasyExcelParams 4.表格样式实体类 MyWriteHandler 5.数据实 ...

  6. java 使用POI导出为pdf,通过浏览器直接下载

    pom.xmlo依赖: <!--POI Excel表格导出依赖--> <dependency><groupId>org.apache.poi</groupId ...

  7. 微信小程序云开发之将云数据库信息导出到Excel表格并复制下载链接

    在必要的情况下,我们需要将数据库的信息导入到Excel表格中.这时候,通过云函数很容易可以实现该功能. 先看一下效果: 我们将分为以下几个步骤: 安装导出Excel表格的模块 编写云函数代码 导出表格 ...

  8. java利用poi生成/读取excel表格

    1.引入jar包依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</ ...

  9. java后台将数据导出到Excel表格

    简单粗暴直接贴代码,把所有主要代码全部糅合在一块展示出来: /**     * 设置导出xls文件的表头          */         public static final String[ ...

最新文章

  1. 高级转录组分析和R数据可视化第11期(报名线上课还可免费参加线下课2020.6)
  2. python写内存挂_编写高效内存Python代码的3个技巧
  3. python重载模块_Python 3.0中重载模块
  4. mxnet深度学习(Symbol)
  5. SpringMvc渲染视图
  6. excel中去掉换行符的快捷键
  7. 隐式人体表示生成虚拟视点+构建关节点的3D神经模型
  8. oracle静默安装报错,Oracle静默安装说明
  9. java 保存对象_Java将对象保存到文件中/从文件中读取对象
  10. 微信小程序组件之picker-view
  11. PS制作水雾玻璃拍照效果、幻影视觉海报
  12. 动态规划之挖金矿问题(Python and Java)
  13. Typecho情侣博客Brave主题源码
  14. 2021年深圳南山区工业企业租金补贴申报时间及条件,补贴300万
  15. HDR视频色调映射算法(之三:Block matching TMO)
  16. android红外遥控器按键键值,红外遥控实验键值设置
  17. js添加多marker 高德地图_覆盖物-参考手册-地图 JS API | 高德地图API
  18. 华为服务器培训文档,服务器云培训
  19. POJ3264 MRQ算法
  20. echarts的标记线和标记点

热门文章

  1. 李雷爱跑步,爱吃东西。 1)李雷体重75.0公斤 2)每次跑步会减肥0.5公斤 3)每次吃东西体重会增加1公斤 4)韩梅梅的体重是45.0公斤
  2. 贝塞尔曲线(Bezier Curve)原理、公式推导及matlab代码实现
  3. 洛谷 P3254 圆桌问题
  4. 通过交叉验证寻找K近邻算法的最优K值
  5. 启英泰伦推出基于三代AIoT芯片的离在线语音识别方案
  6. 在双系统之一Ubuntu下安装YaH3C并解决 [Errno 19] No such device成功连上校园网
  7. apm32f103c8t6 通过定时器1的PWM功能输出频率3mhz占空比50%的方波
  8. Springboot+ElasticSearch 项目实战(三)
  9. srvctl 在oracle下运行,ORACLE RAC 中 SRVCTL 命令详细说明
  10. visu studio编程中L、TEXT、_TEXT、_T 用法说明