我所使用的编辑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文件 */标签:cellStyle,java,单元格,excel,cell,poi,sheet,模板 From: https://www.cnblogs.com/jy6634/p/17774170.html
HSSFWorkbook wb = new HSSFWorkbook();
/** 第二步,在Workbook中添加一个sheet,对应Excel文件中的sheet */
HSSFSheet sheet = wb.createSheet("报表");
将读取改成创建即可