java使用poi简单操作excel

文章目录

引言

编程开发中,我们可能会接到某些需求,例如导出某某某列表数据,或者做一份报表,这时候就需要我们的poi出场了,至于一些规则数据的导出,直接使用easy-poi即可,操作简单,极易上手,在这里就不做过多的赘述,本文今天主要讲解一些poi原生的操作,以便于在老表格中对数据进行更新或者合并等

插入行/列

与其说插入,我们不如说是平移,给新的行/列留出位置,进行创建,废话不多说,我们直接上代码

java 复制代码
/**
 * 平移,传入值为需要操作的文件
 */
 private void shift(Workbook workbook) {
 		// 获取第0个表格
        Sheet sheet = workbook.getSheetAt(0);
        // 移动行,第一个参数是起始行(0开始),第二个参数为最后一行,第三个参数为移动多少,正数向下,负数向上
        // 现在这个参数则是,从index是1的行到当前最后一行,整体向下平移2行
        sheet.shiftRows(1, sheet.getLastRowNum(), 2);
        // 移动列
        // index是1的列到index是3的列向右平移两列
        sheet.shiftColumns(1, 3, 2);
    }

合并单元格以及设置居中

合并单元格比较简单,但是需要注意,先合并单元格,再填充内容,否则很容易将单元格的已填充内容丢失。默认合并后保留第一个单元的内容

java 复制代码
 private void merged(Workbook workbook) {
        Sheet sheet = workbook.getSheetAt(0);
        // 设置格式,都是通过CellStyle进行设置,其中可以设置字体、居中等属性
        CellStyle center = workbook.createCellStyle();
        // 这里设置水平居中,其他的直接看注释即可,当然,在这个位置只是创建样式,并未生效
        center.setAlignment(HorizontalAlignment.CENTER);
        // 创建一行,这里不用getRow()而使用create是因为get可能会存在行不存在的情况,会抛出空指针,后续的列也是如此
        Row row = sheet.createRow(1);
        Cell tf = row.createCell(0);
        tf.setCellValue("甲方名称");
        // 设置单元格内的样式必须在Cell中设置,否则不会生效
        tf.setCellStyle(center);
     	// 这里是合并单元格,必须是Sheet对象。
     	// 传入值是合并位置,这里表示(1,2,4,5都是下标),从第1行到第2行,其中的第4列和第5列的单元格合并为一个单元格
        sheet.addMergedRegion(new CellRangeAddress(1, 2, 4, 5));
        // 这里需要注意,即使是合并了单元格,原有的index也不会变,例如,第1,2个单元格合并后,他的index也是1,但是它占有的index也是1,2,后续的单元格就是3,4
    }

例如下图所示:

用1,2,3,4代表单元格下标

当1,2单元格合并后,合并后单元格index是1,但是3,4单元格的index还是3和4

换行

java 复制代码
		// 这里有两个条件,第一个是\n标识换行,当然只是这个没用,第二个则是WrapText必须设置为true
  		int last = sheet.getLastRowNum();
        String format = "公司名称:%s \n 开户行:%s \n 账号:%s";
        format = String.format(format, vo.getSettlementCompany(), vo.getSettlementBank(), vo.getSettlementCard());
        Row bank = sheet.createRow(last + 1);
        bank.setHeight((short) 1000);
        Cell cell = bank.createCell(0);
        cell.setCellValue(format);
        // 设置格式
        CellStyle cellStyle = workbook.createCellStyle();
        // 设置自动换行
        cellStyle.setWrapText(true);
        cell.setCellStyle(cellStyle);
相关推荐
wewowilling6 小时前
认识微服务
java·运维·微服务·springcloud
代码什么用7 小时前
Java Web 7-10
java·servlet
沫璃染墨7 小时前
《Qt从零入门系列(十三):QSS样式表详解——从选择器与层叠规则到控件美化实战》
开发语言·css·c++·qt·ui·qt6.3·qss
达子6667 小时前
RUST 图解 第 3 章:通用编程概念(Common Programming Concepts)
开发语言·算法·rust
道尔柯南8 小时前
C++ 面向对象编程入门:类和对象(上)
开发语言·c++·算法
楠楠子呀8 小时前
英语、西语、阿语客户各开一个口:多语言获客的分流方案
开发语言·javascript·ecmascript·跨境电商·whatsapp·营销工具
tachibana28 小时前
使用for range 的时候,它的地址会发生变化吗?
开发语言·后端·golang·go·语法
蜗牛互联网8 小时前
GPT-6 与 Intelligent UI:从回答到可审计操作的产品迁移
java·人工智能·后端
临床数据科学和人工智能兴趣组9 小时前
正则表达式的基础语法的基本符号
开发语言·人工智能·python·正则表达式·r语言·r语言-4.2.1·workbudyy
王中阳Go9 小时前
Go 后端转 AI:非科班怎么补?一张 3 列路线表(可保存)
开发语言·人工智能·后端·python·golang·大语言模型