我是靠谱客的博主 要减肥啤酒,这篇文章主要介绍springboot中整合POI实现报表的导入导出1、环境准备2、poi导出报表3、poi导入报表,现在分享给大家,希望可以做个参考。

前言:目前世面上的Excel分为两个大的版本Excel2003和Excel2007及以上两个版本,两者之间的区别如下:
在这里插入图片描述

  • Excel2003是一个特有的二进制格式,其核心结构是复合文档类型的结构,存储数据量较小
  • Excel2007 的核心结构是 XML 类型的结构,采用的是基于 XML 的压缩方式,使其占用的空间更小,操作效率更高

Java中常见的用来操作Excl的方式一般有2种:JXLPOI

  • JXL只能对Excel进行操作,属于比较老的框架,它只支持到Excel 95-2000的版本。现在已经停止更新和维护
  • POI是apache的项目,可对微软的Word,Excel,Ppt进行操作,包括office2003和2007,Excl2003和2007。
  • poi现在一直有更新。所以现在主流使用POI

1、环境准备

新建maven项目,引入依赖

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<dependencies> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>4.0.1</version> </dependency> </dependencies>

2、poi导出报表

1、样式导出

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public static void main(String[] args) throws Exception { //创建工作簿 HSSFWorkbook -- 2003 Workbook wb = new XSSFWorkbook(); //2007版本 //创建表单sheet Sheet sheet = wb.createSheet("测试1"); //创建行对象 参数:索引(从0开始) Row row = sheet.createRow(2); //创建单元格对象 参数:索引(从0开始) Cell cell = row.createCell(2); //向单元格中写入内容 cell.setCellValue("你好"); //样式处理 //创建样式对象 CellStyle style = wb.createCellStyle(); style.setBorderTop(BorderStyle.THIN);//上边框 style.setBorderBottom(BorderStyle.THIN);//下边框 style.setBorderLeft(BorderStyle.THIN);//左边框 style.setBorderRight(BorderStyle.THIN);//右边框 //创建字体对象 Font font = wb.createFont(); font.setFontName("宋体"); //字体 font.setFontHeightInPoints((short)25);//字号 style.setFont(font); //行高和列宽 row.setHeightInPoints(30);//行高 //列宽的宽度 字符宽度 sheet.setColumnWidth(2,31 * 256);//列宽 //剧中显示 style.setAlignment(HorizontalAlignment.CENTER);//水平居中 style.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中 //向单元格设置样式 cell.setCellStyle(style); //文件流 FileOutputStream pis = new FileOutputStream("D:\project-saas-hrm-vue-master\vue-master\测试.xlsx"); //写入文件 wb.write(pis); pis.close(); }

2、导出写入图片

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public static void main(String[] args) throws Exception { //创建工作簿 HSSFWorkbook -- 2003 Workbook wb = new XSSFWorkbook(); //2007版本 //创建表单sheet Sheet sheet = wb.createSheet("测试1"); //读取图片流 FileInputStream stream = new FileInputStream("D:\1.jpg"); //转化二进制数组 byte[] bytes = IOUtils.toByteArray(stream); stream.read(bytes); //向POI内存中添加一张图片,返回图片在图片集合中的索引 int index = wb.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);//参数一:图片的二进制数据,参数二:图片类型 //绘制图片工具类 CreationHelper helper = wb.getCreationHelper(); //创建一个绘图对象 Drawing<?> patriarch = sheet.createDrawingPatriarch(); //创建锚点,设置图片坐标 ClientAnchor anchor = helper.createClientAnchor(); anchor.setRow1(0); anchor.setCol1(0); //绘制图片 Picture picture = patriarch.createPicture(anchor, index);//图片位置,图片的索引 picture.resize();//自适应渲染图片 //文件流 FileOutputStream pis = new FileOutputStream("D:\project-saas-hrm-vue-master\vue-master\测试1.xlsx"); //写入文件 wb.write(pis); pis.close(); }

3、poi导入报表

注意:sheet.getLastRowNum() 获取到的是行的索引(即实际行数减1),而row.getLastCellNum() 获取的是列数(即实际列数),两种的含义是不同的。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public static void main(String[] args) throws Exception { //1.根据Excel文件创建工作簿 Workbook wb = new XSSFWorkbook("D:\test.xlsx"); //2.获取Sheet Sheet sheet = wb.getSheetAt(0);//参数:索引 //3.获取Sheet中的每一行,和每一个单元格 for (int rowNum = 0; rowNum<= sheet.getLastRowNum() ;rowNum ++) { Row row = sheet.getRow(rowNum);//根据索引获取每一个行 StringBuilder sb = new StringBuilder(); for(int cellNum=2;cellNum< row.getLastCellNum(); cellNum ++) { //根据索引获取每一个单元格 Cell cell = row.getCell(cellNum); //获取每一个单元格的内容 Object value = getCellValue(cell); sb.append(value).append("-"); } System.out.println(sb.toString()); } } public static Object getCellValue(Cell cell) { //1.获取到单元格的属性类型 CellType cellType = cell.getCellType(); //2.根据单元格数据类型获取数据 Object value = null; switch (cellType) { case STRING: value = cell.getStringCellValue(); break; case BOOLEAN: value = cell.getBooleanCellValue(); break; case NUMERIC: if(DateUtil.isCellDateFormatted(cell)) { //日期格式 value = cell.getDateCellValue(); }else{ //数字 value = cell.getNumericCellValue(); } break; case FORMULA: //公式 value = cell.getCellFormula(); break; default: break; } return value; }

最后

以上就是要减肥啤酒最近收集整理的关于springboot中整合POI实现报表的导入导出1、环境准备2、poi导出报表3、poi导入报表的全部内容,更多相关springboot中整合POI实现报表内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部