1.pom.xml中加入poi依赖:

org.apache.poi

poi

3.10-FINAL

org.apache.poi

poi-ooxml

3.10-FINAL

org.apache.poi

poi-scratchpad

3.10-FINAL

jar

compile

2.创建导出excel文件模板;

3.controller层实现代码:

@PostMapping("/excelCarrierOrder")

public ResponseEntity excelCarrierOrder(@RequestBody Map params,HttpServletResponse response) throws IOException{

//列表数据

XSSFWorkbook workbook = carrierOrderService.excelCarrierOrder(params);

ByteArrayOutputStream os = new ByteArrayOutputStream();

workbook.write(os);

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");

response.setHeader("Pragma", "no-cache");

response.setHeader("Expires", "0");

response.setHeader("charset", "utf-8");

// 当前日期,用于导出文件名称

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");

String name =sdf.format(new Date()) + ".xlsx";

response.setHeader("Content-Disposition", "attachment;filename=\"" + URLEncoder.encode(name, "UTF-8") + "\"");

workbook.write(response.getOutputStream());

if (null != os) {

os.close();

}

return new ResponseEntity(null, null, HttpStatus.OK);

}

4.service实现类实现代码:

@Override

public XSSFWorkbook excelCarrierOrder(Map params) throws IOException {

//模板路径

String path = "/templates/excel/订单列表.xlsx";

XSSFWorkbook workboot = new XSSFWorkbook(this.getClass().getResourceAsStream(path));

//sheet页(默认sheet1页),也可通过workboot.createSheet("订单列表")创建sheet页

XSSFSheet sheetAt = workboot.getSheetAt(0);

//订单基本表数据

List list = mapper.getExcelCarrierOrder(params);

//开始创建行和表格并且加入数据

//行

XSSFRow row;

int i = 0;

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");

if(null != list && !list.isEmpty()) {

for (CarrierOrderPojo dto : list) {

//根据订单id查询车辆信息

List truckList = truckMapper.getTruckList(dto.getId());

//根据订单id查询装卸车费用

List serveList = serveMapper.getServeList(dto.getId());

//根据订单id查询采购详情

List detailList = detailMapper.getCarrierOrderDetailList(dto.getId());

String purchaseOrderNumber = "";

i += 1;

//创建行

row = sheetAt.createRow(i);

//承运商

if(null != dto.getCarrierName()) {

row.createCell(0).setCellValue(dto.getCarrierName());

}else {

row.createCell(0).setCellValue("");

}

//物流单号

if(null != dto.getLogisticsNumber()) {

row.createCell(1).setCellValue(dto.getLogisticsNumber());

}else {

row.createCell(1).setCellValue("");

}

//采购单号

if(null != detailList && !detailList.isEmpty()) {

for (CarrierOrderDetail detaildto : detailList) {

purchaseOrderNumber += detaildto.getPurchaseOrderNumber()+",";

}

row.createCell(2).setCellValue(purchaseOrderNumber.substring(0, purchaseOrderNumber.length()-1));

}else {

row.createCell(2).setCellValue("");

}

//发货时间

if(null != dto.getTakingDate()) {

row.createCell(3).setCellValue(sdf.format(dto.getTakingDate()));

}else {

row.createCell(3).setCellValue("");

}

//到货时间

if(null != dto.getDeliveryDate()) {

row.createCell(4).setCellValue(sdf.format(dto.getDeliveryDate()));

}else {

row.createCell(4).setCellValue("");

}

//总体积

if(null != dto.getTotalAllVolume()) {

row.createCell(5).setCellValue(dto.getTotalAllVolume()+"m³");

}else {

row.createCell(5).setCellValue("");

}

//箱型

if(null != truckList && !truckList.isEmpty()) {

for (CarrierOrderTruck truckdto : truckList) {

if("面包车".equals(truckdto.getTruckType())) {

row.createCell(6).setCellValue(truckdto.getTruckNumber()+"辆");

}else if("金杯车".equals(truckdto.getTruckType())){

row.createCell(7).setCellValue(truckdto.getTruckNumber()+"辆");

}else if("2米7平板".equals(truckdto.getTruckType())){

row.createCell(8).setCellValue(truckdto.getTruckNumber()+"辆");

}else if("3米8平板".equals(truckdto.getTruckType())){

row.createCell(9).setCellValue(truckdto.getTruckNumber()+"辆");

}else if("4米2平板".equals(truckdto.getTruckType())){

row.createCell(10).setCellValue(truckdto.getTruckNumber()+"辆");

}else if("4米2厢车".equals(truckdto.getTruckType())){

row.createCell(11).setCellValue(truckdto.getTruckNumber()+"辆");

}else if("4米2高栏".equals(truckdto.getTruckType())){

row.createCell(12).setCellValue(truckdto.getTruckNumber()+"辆");

}else if("6米8厢车".equals(truckdto.getTruckType())){

row.createCell(13).setCellValue(truckdto.getTruckNumber()+"辆");

}else if("6米8高栏".equals(truckdto.getTruckType())){

row.createCell(14).setCellValue(truckdto.getTruckNumber()+"辆");

}else if("7米6厢车".equals(truckdto.getTruckType())){

row.createCell(15).setCellValue(truckdto.getTruckNumber()+"辆");

}else if("9米6厢车".equals(truckdto.getTruckType())){

row.createCell(16).setCellValue(truckdto.getTruckNumber()+"辆");

}else if("9米6高栏".equals(truckdto.getTruckType())){

row.createCell(17).setCellValue(truckdto.getTruckNumber()+"辆");

}else if("12米5厢车".equals(truckdto.getTruckType())){

row.createCell(18).setCellValue(truckdto.getTruckNumber()+"辆");

}else if("13米高栏".equals(truckdto.getTruckType())){

row.createCell(19).setCellValue(truckdto.getTruckNumber()+"辆");

}else if("16米5厢车".equals(truckdto.getTruckType())){

row.createCell(20).setCellValue(truckdto.getTruckNumber()+"辆");

}else if("17米5厢车".equals(truckdto.getTruckType())){

row.createCell(21).setCellValue(truckdto.getTruckNumber()+"辆");

}

}

}

//送货距离

if(null != dto.getDistance()) {

row.createCell(22).setCellValue(dto.getDistance()+"km");

}else {

row.createCell(22).setCellValue("");

}

//运输费用

if(null != dto.getFreight()) {

row.createCell(23).setCellValue(dto.getFreight()+"元");

}else {

row.createCell(23).setCellValue("");

}

//装货费用,卸货费用

if(null != serveList && !serveList.isEmpty()) {

for (CarrierOrderServe servedto : serveList) {

if("装货".equals(servedto.getServiceType())) {

row.createCell(24).setCellValue(servedto.getPrice()+"元");

}else if("卸货".equals(servedto.getServiceType())){

row.createCell(25).setCellValue(servedto.getPrice()+"元");

}

}

}

//异常费用

if(null != dto.getOtherCost()) {

row.createCell(26).setCellValue(dto.getOtherCost()+"元");

}else {

row.createCell(26).setCellValue("");

}

//合计

if(null != dto.getTotalCost()) {

row.createCell(27).setCellValue(dto.getTotalCost()+"元");

}else {

row.createCell(27).setCellValue("");

}

//备注

if(null != dto.getCarrierRemark()) {

row.createCell(28).setCellValue(dto.getCarrierRemark());

}else {

row.createCell(28).setCellValue("");

}

}

}

return workboot;

}

5.项目中引入第2步创建的模板,要与Service实现类中path路径对应:

6.效果:

7.XSSFWorkbook 做导出也可以不引入模板,通过workboot.createSheet("订单列表")创建sheet页,并设定表格样式,可实现相同的效果。但是我觉得导入模板比较简单,容易上手。

如有错误,请指出,谢谢!

java 导出excel xssf_XSSFWorkbook实现导出excel相关推荐

  1. java导出为excel文件_java导出数据到excel文件

    有的时候,将一些有用的数据导出到excel是很有必要的.比如说,我现在在做一个学校的在线教学平台,有一个需求是:将学生成绩导出到excel文件中去. 那怎样实现用java导出数据到excel文件呢?? ...

  2. JAVA导出exls时报oom_如何实现导出百万条数据到EXCEL中不报OOM异常?

    Java项目中使用POI导出百万条数据到Excel中,但是会出现内存溢出异常. 存在以下问题需要考虑POI导出条数限制6w+ 数据量大的话会导致内存溢出 现在的做法是每6w条数据做一次分割,创建一个新 ...

  3. java实现excel的导入导出(poi详解)

    经过两天的研究,现在对excel导出有点心得了.我们使用的excel导出的jar包是poi这个阿帕奇公司的一个项目,后来被扩充了.是比较好用的excel导出工具. 下面来认识一下这个它吧. 我们知道要 ...

  4. java导出highcharts_java实现highcharts导出图片至excel

    1. 目的 通过java后台实现将前端页面的highcharts图表导出至生成的excel文件中.使用于报表页面导出类功能. 2. 说明 前端页面将图表的svg信息字符串作为参数传递 后台使用bati ...

  5. java使用POI工具类导出excel

    POI导出excel 1.导入maven依赖 <dependency><groupId>org.apache.poi</groupId><artifactId ...

  6. 中报表导出带表头_来看看Java是 如何优雅的导出 Excel的

    点击上方"Python高校",关注 文末干货立马到手 来源:你在我家门口 juejin.im/post/5c6b6b126fb9a04a0c2f024f 前言 公司项目最近有一个需 ...

  7. JAVA实现创建Excel表并导出(转发)

    JAVA实现创建Excel表并导出(转发) 最近在做毕设,要求导出word,excel,pdf,这是excel. 原文是:http://blog.csdn.net/u014621859/article ...

  8. java获取excle表格对象_Java使用excel工具类导出对象功能示例

    本文实例讲述了Java使用excel工具类导出对象功能.分享给大家供大家参考,具体如下: package com.gcloud.common; import org.apache.poi.ss.use ...

  9. java ajax 导出excel文件_springMVC(4)---生成excel文件并导出

    springMVC(4)---生成excel文件并导出 在开发过程中,需要将数据库中的数据以excel表格的方式导出. 首先说明.我这里用的是Apache的POI项目,它是目前比较成熟的HSSF接口, ...

最新文章

  1. 用户请求队列化_分布式消息队列选型分析
  2. 【复杂网络】复杂网络多种算法及工具应用集合
  3. Keepalived配置文件
  4. Oracle 查看library cache 解析命中率
  5. Mysql小练习(1)
  6. springCloud(22):Eureka总结提升
  7. 数据结构与算法 | 队列
  8. Dev C++ 无法调试问题的解决——小白也能看懂!
  9. Linux_linux基础命令(增删查,权限,Linux下的重要目录,重要命令(. du, df, top, free, pstack, su, sudo).安装gcc/g++, gdb, vim )
  10. 14.深度学习练习:Face Recognition for the Happy House
  11. java中的foreach用法及总结
  12. es6 原生构造函数的继承
  13. 从零开始学前端:初识函数,合法属性与自定义属性 --- 今天你学习了吗?(JS:Day2)
  14. recurdyn和matlab联合仿真,基于RecurDyn与Simulink的液压破碎锤联合仿真与试验分析
  15. .Net Core之初识及WebApi的简单使用和发布
  16. 理解计算-从根号 2 到 AlphaGo
  17. 员工身高体重决定能否晋升?自如回应
  18. keep-alive的用法和作用
  19. selenium firefox 启动报错 Timed out wating 45 seconds for firefox to start
  20. Java锁---偏向锁、轻量级锁、自旋锁、重量级锁

热门文章

  1. 物流机器人的智能化与自动驾驶技术的应用
  2. 一个人久了,会习惯的
  3. 计算机二级及宝哪个好,计算机等级考试二级哪个好考
  4. Qt 添加MSVC2017编译器(2022年保姆级教程,不安装完整VS)
  5. 移动应用的AR滤镜和实时特效:提升用户创造力和娱乐体验
  6. MATLAB 自然样条函数(约束两端斜率)
  7. 前端游戏开发和h5前端开发_人们不告诉您有关前端开发的10件事
  8. Asp.NetCore实现一个简单的手机号码验证
  9. 矩阵sp.coo_matrix()
  10. 7.2 参数区间的估计