Excel格式报表生成 (POI技术)
导入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技术)相关推荐
- 报表技术之Excel格式报表生成(POI)
报表技术之Excel格式报表生成(POI) 1.找到你的页面的导出Excel的按钮 2.给导出按钮添加事件 3. 编写 ReportAction 添加 exportXls 方法 POI 生成 Exce ...
- poi excel mysql_java的poi技术读取Excel数据到MySQL
这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 :java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 : ...
- POI Excel格式报表生成 同步下载问题解决
前言 解决POI 导出功能,过时方法和新增样式放在最下面 或者参考下文 POI 样式调节 0.maven(新版本) <poi.version>4.1.2</poi.version&g ...
- 报表技术之PDF格式报表生成 (IText)
报表技术之PDF格式报表生成 (IText) IText介绍 官网: http://itextpdf.com/ 最新 iText7 涉及商业收费 1.在maven项目中导入itext jar 支持 2 ...
- 使用POI技术往Excel中写入图片并以附件的形式发送给对方
使用POI技术往Excel中写入图片 Service层代码 fastDFS工具类 ExcelUtil工具类 Service层代码 @Service public class UserChangeSer ...
- 使用POI技术简单的将数据库中的数据读取出为Excel文件
利用POI生成.xlxs 效果图 利用反射将实体类的属性读取出来,然后对应数据库表中的字段,循环插入对应的数据 数据来源 本次测试的数据为数据库查询得出,所以需要MyBatis查询数据库,然后根据反射 ...
- java导入excel数据到mysql_java的poi技术读取Excel数据到MySQL
这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : 项目结构: Excel中的测试数据: 数据库结构: 对应的SQL: 1 CREATE TABL ...
- java的poi技术读取Excel[2003-2007,2010]
这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...
- java的poi技术读,写Excel[2003-2007,2010]
在上一篇blog:java的poi技术读取Excel[2003-2007,2010] 中介绍了关于java中的poi技术读取excel的相关操作 读取excel和MySQL相关: java的poi技术 ...
最新文章
- LeetCode简单题之数组的度
- Google的价值观
- 推荐系统XDeepFM模型--DeepFM和DCN升级版
- BurpSuit配置抓包http和https请求
- 毕业设计第二次本周目标
- 深度学习(Deep Learning)综述及算法简介
- Linux运维第二课----Linux发展史、环境准备
- RMSProp算法和AdaDelta算法
- Mac安装虚拟机和CentOS
- 为了强调低电平有效,有时也将反相器图形符号中表示反相的小圆圈画在输入端,例如上图的左边一列反相器的画法
- 计算机上的del键功能是什么,计算机上的DEL是什么?
- 三阶魔方拼全6面口诀
- h5倒计时弹窗_H5活动开始/结束倒计时实现
- 老鸟带你画tiled lines
- TCP/UDP常见端口
- dockers移盘挂载
- 程序员修炼之道-从小工到专家(第一章)读后感
- 今日头条起诉今日油条!后者还注册了“饼多多”和“快手抓饼”
- 改变网络的十年 国外流行php程序代表作 【转】
- 预见2019吴晓波年终秀演讲PPT整理
热门文章
- 打车软件盛行,如何判断是否拒载
- 向日葵Android受控端老版本,向日葵Android端版本更新:支持远程开关机
- 超大跨度桥梁建设如何突破特异风致灾风险的困局?
- 【Dart 教程系列第 10 篇】Dart 之 removeLast 删除数组的最后一个元素
- UE4(Unreal Engine4)在蒙太奇动画中添加音频轨道通知
- 【CYH-02】NOIp考砸后虐题赛:坐标:题解
- python之__dict__方法使用
- pycharm中scrapy库的安装以及创建
- Corral the Cows赶牛入圈(二维离散化)
- 从输入 URL 到页面加载完成的过程中都发生了什么事情?