导入poi报表需要的jar包

  <poi.version>3.11</poi.version> <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>${poi.version}</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>${poi.version}</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>${poi.version}</version></dependency>

1 waybill_manage.html 页面添加导出按钮
2 后台添加Controller,并提供下载方法
3 Service提供查找所有运单数据的方法

1、 添加导出按钮(导出excel报表)

<a id="exportXlsBtn" icon="icon-print" href="#" class="easyui-linkbutton" plain="true">导出Excel报表</a>

2、 添加导出事件
// 导出Excel 按钮

$("#exportXlsBtn").click(function(){// 下载效果 $.ajax({type: "GET",url: "/report/exportXls"});
});


3、 创建包com.czxy.bos.print.ReportController,编写ReportController 添加 exportXls 方法
• POI生成Excel 步骤写Excel过程一样:
新建Excel文档(HSSFWorkbook) – 新建(Sheet) – 新建(Row) – 新建(Cell单元格) – 写单元格数据
• POI 生成HSSF (xls)和XSSF (xlsx)

POI导出的步骤:

1 创建工作簿
2 创建工作表
3 创建行
4 创建单元格
5 设置内容
6 设置内容格式
7 下载

设置列宽

设置小标题样式

完整代码

package com.czxy.bos.controller.print;import com.czxy.bos.domain.take_delivery.WayBill;
import com.czxy.bos.service.take_delivery.WayBillService;
import com.czxy.bos.util.DownloadUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.util.Date;
import java.util.List;@RestController
@RequestMapping("/report")
public class ReportController {@Autowiredprivate WayBillService wayBillService;@GetMapping("exportXls")public void exportXls(HttpServletResponse response) throws Exception{/*** 查找数据之后,下面只需要将内容写进xls中,然后下载*/List<WayBill> wayBillList = wayBillService.findAllWayBill();//1 创建工作簿  xls  HSSFWorkbook xlsx XSSFWorkbookWorkbook wb = new XSSFWorkbook();//2 创建工作表Sheet sheet = wb.createSheet();// 设置列宽---1/256 一个字符的宽度sheet.setColumnWidth(0,15*256);sheet.setColumnWidth(1,15*256);sheet.setColumnWidth(2,15*256);sheet.setColumnWidth(3,25*256);sheet.setColumnWidth(4,25*256);sheet.setColumnWidth(5,25*256);sheet.setColumnWidth(6,25*256);sheet.setColumnWidth(7,25*256);sheet.setColumnWidth(8,25*256);/*** 定义公共变量*/int rowNo=0,cellNo=0;//行号  和  列号Row nRow = null;// 行对象通用变量Cell nCell = null;// 单元格对象通用变量/****************大标题打印****************///3 创建行nRow = sheet.createRow(rowNo);//4 创建单元格nCell = nRow.createCell(cellNo);//5 设置内容nCell.setCellValue("bos项目运单表统计"+new Date().toLocaleString());//6 设置内容格式// 合并单元格  //参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列sheet.addMergedRegion(new CellRangeAddress(0, 0, (short) 0, (short) 9));// 垂直居中  +   水平居中  +  加粗CellStyle bigTitleCellStyle = bigTitleStyle(wb);nCell.setCellStyle(bigTitleCellStyle);/****************小标题打印****************/String[] titles={"编号id","运单编号","订单编号","寄件人姓名","寄件人电话","寄件人地址","收件人姓名","收件人电话","收件人地址"};// 进入小标题打印的时候,行号变化吗?rowNo=0rowNo++;// 进入小标题打印的时候,列号需要变化吗?cellNo = 0;//3 创建行nRow = sheet.createRow(rowNo);for (String title:titles){//4 创建单元格nCell = nRow.createCell(cellNo++);// 先创建单元格,然后在新增//5 设置内容nCell.setCellValue(title);//6 设置内容格式nCell.setCellStyle(titleStyle(wb));}/****************内容打印****************/// 单元格需要变化吗rowNo++;cellNo=0;for(WayBill wayBill:wayBillList){//3 创建行nRow = sheet.createRow(rowNo++);//4 创建单元格//idnCell = nRow.createCell(cellNo++);nCell.setCellValue(wayBill.getId());nCell.setCellStyle(contentStyle(wb));//wayBillNumnCell = nRow.createCell(cellNo++);nCell.setCellValue(wayBill.getWayBillNum());nCell.setCellStyle(contentStyle(wb));//orderidnCell = nRow.createCell(cellNo++);nCell.setCellValue(wayBill.getOrderId());nCell.setCellStyle(contentStyle(wb));//寄件人姓名nCell = nRow.createCell(cellNo++);nCell.setCellValue(wayBill.getSendName());nCell.setCellStyle(contentStyle(wb));//寄件人电话nCell = nRow.createCell(cellNo++);nCell.setCellValue(wayBill.getSendMobile());nCell.setCellStyle(contentStyle(wb));//寄件人地址nCell = nRow.createCell(cellNo++);nCell.setCellValue(wayBill.getSendAddress());nCell.setCellStyle(contentStyle(wb));//收件人姓名nCell = nRow.createCell(cellNo++);nCell.setCellValue(wayBill.getRecName());nCell.setCellStyle(contentStyle(wb));//收件人电话nCell = nRow.createCell(cellNo++);nCell.setCellValue(wayBill.getRecMobile());nCell.setCellStyle(contentStyle(wb));//收件人地址nCell = nRow.createCell(cellNo++);nCell.setCellValue(wayBill.getRecAddress());nCell.setCellStyle(contentStyle(wb));//cellNo规0cellNo = 0;}/****************下载****************/DownloadUtil downloadUtil = new DownloadUtil();//ByteArrayOutputStream byteArrayOutputStream -- 输出流ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();// 将wb写进流wb.write(byteArrayOutputStream);// HttpServletResponse response -- response// String returnName -- 下载的名字downloadUtil.download(byteArrayOutputStream,response,"运单表.xlsx");System.out.println("okokokok....");}/*** 垂直居中  +   水平居中  +  加粗* @param wb* @return*/public CellStyle bigTitleStyle(Workbook wb){// 创建格式CellStyle cellStyle = wb.createCellStyle();// 水平对齐方式cellStyle.setAlignment(CellStyle.ALIGN_CENTER);// 垂直居中cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);// 设置字体Font font = wb.createFont();// 是数值的1/20 大小font.setFontHeight((short) 480);font.setBold(true);font.setColor(Font.COLOR_RED);cellStyle.setFont(font);return cellStyle;}public CellStyle titleStyle(Workbook wb){CellStyle cellStyle = wb.createCellStyle();cellStyle.setBorderTop(CellStyle.BORDER_THIN);cellStyle.setBorderRight(CellStyle.BORDER_THIN);cellStyle.setBorderBottom(CellStyle.BORDER_THIN);cellStyle.setBorderLeft(CellStyle.BORDER_THIN);Font font = wb.createFont();font.setFontHeight((short)300);cellStyle.setFont(font);return cellStyle;}public CellStyle contentStyle(Workbook wb){CellStyle cellStyle = wb.createCellStyle();cellStyle.setBorderTop(CellStyle.BORDER_THIN);cellStyle.setBorderRight(CellStyle.BORDER_THIN);cellStyle.setBorderBottom(CellStyle.BORDER_THIN);cellStyle.setBorderLeft(CellStyle.BORDER_THIN);Font font = wb.createFont();font.setFontHeight((short)200);cellStyle.setFont(font);return cellStyle;}}4、 编写WayBillService.java代码 (代码效果类似之前运单查询代码 )
public List<WayBill> findAll() {return wayBillMapper.selectAll();
}

【导出excel的效果图】

总结:
1 确认POI导出的步骤
2 先导出大标题+下载—合并单元格,横向纵向居中
3 小标题–边框线的设置
4 内容

Excel格式报表生成 (POI技术)相关推荐

  1. 报表技术之Excel格式报表生成(POI)

    报表技术之Excel格式报表生成(POI) 1.找到你的页面的导出Excel的按钮 2.给导出按钮添加事件 3. 编写 ReportAction 添加 exportXls 方法 POI 生成 Exce ...

  2. poi excel mysql_java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 :java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 : ...

  3. POI Excel格式报表生成 同步下载问题解决

    前言 解决POI 导出功能,过时方法和新增样式放在最下面 或者参考下文 POI 样式调节 0.maven(新版本) <poi.version>4.1.2</poi.version&g ...

  4. 报表技术之PDF格式报表生成 (IText)

    报表技术之PDF格式报表生成 (IText) IText介绍 官网: http://itextpdf.com/ 最新 iText7 涉及商业收费 1.在maven项目中导入itext jar 支持 2 ...

  5. 使用POI技术往Excel中写入图片并以附件的形式发送给对方

    使用POI技术往Excel中写入图片 Service层代码 fastDFS工具类 ExcelUtil工具类 Service层代码 @Service public class UserChangeSer ...

  6. 使用POI技术简单的将数据库中的数据读取出为Excel文件

    利用POI生成.xlxs 效果图 利用反射将实体类的属性读取出来,然后对应数据库表中的字段,循环插入对应的数据 数据来源 本次测试的数据为数据库查询得出,所以需要MyBatis查询数据库,然后根据反射 ...

  7. java导入excel数据到mysql_java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : 项目结构: Excel中的测试数据: 数据库结构: 对应的SQL: 1 CREATE TABL ...

  8. java的poi技术读取Excel[2003-2007,2010]

    这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...

  9. java的poi技术读,写Excel[2003-2007,2010]

    在上一篇blog:java的poi技术读取Excel[2003-2007,2010] 中介绍了关于java中的poi技术读取excel的相关操作 读取excel和MySQL相关: java的poi技术 ...

最新文章

  1. LeetCode简单题之数组的度
  2. Google的价值观
  3. 推荐系统XDeepFM模型--DeepFM和DCN升级版
  4. BurpSuit配置抓包http和https请求
  5. 毕业设计第二次本周目标
  6. 深度学习(Deep Learning)综述及算法简介
  7. Linux运维第二课----Linux发展史、环境准备
  8. RMSProp算法和AdaDelta算法
  9. Mac安装虚拟机和CentOS
  10. 为了强调低电平有效,有时也将反相器图形符号中表示反相的小圆圈画在输入端,例如上图的左边一列反相器的画法
  11. 计算机上的del键功能是什么,计算机上的DEL是什么?
  12. 三阶魔方拼全6面口诀
  13. h5倒计时弹窗_H5活动开始/结束倒计时实现
  14. 老鸟带你画tiled lines
  15. TCP/UDP常见端口
  16. dockers移盘挂载
  17. 程序员修炼之道-从小工到专家(第一章)读后感
  18. 今日头条起诉今日油条!后者还注册了“饼多多”和“快手抓饼”
  19. 改变网络的十年 国外流行php程序代表作 【转】
  20. 预见2019吴晓波年终秀演讲PPT整理

热门文章

  1. 打车软件盛行,如何判断是否拒载
  2. 向日葵Android受控端老版本,向日葵Android端版本更新:支持远程开关机
  3. 超大跨度桥梁建设如何突破特异风致灾风险的困局?
  4. 【Dart 教程系列第 10 篇】Dart 之 removeLast 删除数组的最后一个元素
  5. UE4(Unreal Engine4)在蒙太奇动画中添加音频轨道通知
  6. 【CYH-02】NOIp考砸后虐题赛:坐标:题解
  7. python之__dict__方法使用
  8. pycharm中scrapy库的安装以及创建
  9. Corral the Cows赶牛入圈(二维离散化)
  10. 从输入 URL 到页面加载完成的过程中都发生了什么事情?