首页 > 编程语言 >使用java的poi工具类编辑excel

使用java的poi工具类编辑excel

时间:2023-10-19 10:46:14浏览次数:40  
标签:cellStyle java 单元格 excel cell poi sheet 模板

我所使用的编辑excel有两种方式:1.使用现成的模板进行填充输出。2.直接生成出新的excel。

     第一种方式:模板填充:

//第一步:读取excel文件
        try (FileInputStream fileInputStream = new FileInputStream(templateFilePath);
            Workbook workbook = new XSSFWorkbook(fileInputStream)) {
            //第二步,读取第一个sheet,有其他sheet则下标加一即可
            Sheet sheet = workbook.getSheetAt(0);
            //第三步:获取行或者创建行
            Row row = sheet.createRow(rowNum);
            //获取行的代码是Row row = sheet.getRow(rowNum);
            //sheet有很多方法,比如getLastRow获取最后一行等,还能获取行号
            //第四步:获取到行之后就可以获取列来编辑指定单元格的数据了,同样可以创建或者获取指定列
             //或者Cell cell = row.getCell(j);,j是下标
             Cell cell = row.createCell(j);
             //第五步:编辑该单元格,我这里是对序号的编辑
             cell.setCellValue(i+1);
             //第六步:保存编辑好的excel文件
             try (FileOutputStream fileOutputStream = new FileOutputStream(outPath)) {
                workbook.write(fileOutputStream);
             }
        }catch (Exception e){
            e.printStackTrace();
        }

  模板填充的方式可以根据原单元格的值来替换文本,

Cell cell = row.createCell(j);替换为getCell(j).getCellValue();即可获取原始文本,进行判断之后进行文本替换也是可行的
二:设计单元格样式:
public void setCellStyle(Workbook workbook,Cell cell){
// 创建一个样式
CellStyle cellStyle = workbook.createCellStyle();

cellStyle.setBorderTop(BorderStyle.THIN);
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);

// 设置内容水平居中
cellStyle.setAlignment(HorizontalAlignment.CENTER);

// 设置内容垂直居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);

cell.setCellStyle(cellStyle);
}
传一个工作博和指定单元格即可,设置上下左右边框和内容居中,也可以设计其它excel样式
三:不使用模板文件,直接替换单元格
其实写法和上面的模板替换差不多,只不过单元格都要使用createRow的方式创建,这里提供单元格的合并方法:
CellRangeAddress region = new CellRangeAddress(lastRowNum+1, lastRowNum+2, 0, 15);
参数是起始行,结束行,起始列,结束列,下标都是从0开始



没有模板的话主要不同的代码是
/** 第一步,创建一个Workbook,对应一个Excel文件  */
HSSFWorkbook wb = new HSSFWorkbook();

/** 第二步,在Workbook中添加一个sheet,对应Excel文件中的sheet */
HSSFSheet sheet = wb.createSheet("报表");
将读取改成创建即可

标签:cellStyle,java,单元格,excel,cell,poi,sheet,模板
From: https://www.cnblogs.com/jy6634/p/17774170.html

相关文章

  • javascript之分片上传,断点续传的实际项目实现详解
    首先,我们需要了解什么是分片上传和断点续传。分片上传是将大文件分成多个小块进行上传,每个小块可以独立上传,从而提高上传速度和稳定性。而断点续传是指在上传大文件时,当上传过程中因断网或其他原因中断,再次上传时可以不用重头开始,而是从中断的地方继续上传。接下来是分片上传和......
  • 关于java的常见异常处理
    Java中常用的异常处理包括以下几种类型的异常:编译时异常、运行时异常和错误。在Java中,异常处理是通过异常处理机制来进行的。当程序运行过程中出现异常时,程序会根据异常处理机制来决定如何处理异常,以保证程序的稳定运行。 1.编译时异常(CheckedExceptions)编译时异常在程序编......
  • elasticsearch 8.7.0的Java API详解教程(一)
    最近作者做一个es的搜索,之前采用的是7.12.1,本来接口都已经基本上写好了,后面es要升级到8.7.0,一升级就连接不上es8.7.0了,后面才发现原来es8是默认采用了HTTPS协议,需要配置认证证书,这个问题搞了好久好久,最后终于搞成功了,在此写一篇博客记录一下。一、pom文件<?xmlversion="1.0"encod......
  • java学习_02.1
    数据类型1.基本数据类型整数类型byte,short,int,long浮点数类型float,double字符类型char布尔类型boolean注意//long//如果要定义long类型的变量//在数据值的后面需要加一个L作为后缀//L可以是大写的,也可以是小写的。......
  • Java拾贝第五天——内部类
    Java拾贝不建议作为0基础学习,都是本人想到什么写什么内部类在类中可以定义成员变量和方法,而且还可以定义一个类。一般内部类分为四种:成员内部类、局部内部类、静态内部类、匿名内部类。成员内部类成员内部类就好像成员变量一样,定义在类的内部。classOut{privateint......
  • 算法之空间复杂度以及评判算法的标准(Java)
    一:概述//例如:给出一些整数n:31254972,其中//有两个整数是重复的,要找出这两个重复地整数。//对于这个简单的需求,可以使用很多的思路类解决,其中最朴素的就是//双重循环//遍历整个数列,每遍历一个新的整数就开始回顾//之前遍历过的所有整数。//即第1步:遍历整数3,前面没有......
  • 23.10.18(常用Java异常处理情况整合)
    在JAVA项目中,异常处理是一项非常重要的任务。合理处理异常能够提高程序的稳定性和可靠性,保证程序的正常运行。下面是关于JAVA项目中常用的异常处理情况的总结:1.空指针异常(NullPointerException):在使用一个空对象的成员变量或方法时会抛出该异常。可以通过判断对象是否为空来避免......
  • javaweb第10章源码
    javaweb第10章源码下载链接:https://wwpv.lanzoue.com/iDhBE1c5hcxg文件结构CHAPTER10│.classpath│.project│chapter10.iml│├─.idea│encodings.xml│misc.xml│modules.xml│workspace.xml│├─.settings│.jsdtscope......
  • 23.10.18 Java当中的异常处理
    Java当中的异常处理在Java中,异常是指在程序执行期间发生的错误或异常情况,可以分为两种类型:受检异常(CheckedException)和非受检异常(UncheckedException)。受检异常:受检异常是指需要在代码中显式处理的异常,通常继承自Exception类的子类。例如,IOException和SQLException是受检异......
  • 在JavaScript中,`!!`(不是not)操作符的作用是什么?
    内容来自DOChttps://q.houxu6.top/?s=在JavaScript中,!!(不是not)操作符的作用是什么?我看到了一些代码,似乎使用了我不知道的操作符,形式为两个感叹号,就像这样:!!。有人能告诉我这个操作符是做什么的吗?我看到这个操作符的上下文是:this.vertical=vertical!==undefined?!!ver......