public static void main(String[] args) throws IOException,
InvalidFormatException {
File file=new File("E:\\\\20230609155818.xlsx");
Workbook workbook=WorkbookFactory.create(new FileInputStream(file));
Sheet sheet=workbook.getSheetAt(0);
int rows=50;
//合并起始行初始单元格内容
String firstValue=sheet.getRow(2).getCell(0).getStringCellValue();
//合并起始行初始值
int firstRow=2;
int num=1;
for(int i=2;i<rows;i++){
Row row=sheet.getRow(i);
Cell cell=row.getCell(0);
if(!cell.getStringCellValue().equals(firstValue)){
//单元格不相同时进行合并
//例如从第0行开始得到一个初始值,然后读取到第十行时内容变了,那么合并的截至行就是第十行减去一行,就是从第0行合并至第九行
sheet.addMergedRegion(new CellRangeAddress(firstRow, i-1, 0, 0));
System.err.println("第"+num+"次合并,从第"+firstRow+"至第"+(i-1)+"行");
//单元格内容不相同时重新赋值合同单元格的初始内容
firstValue=cell.getStringCellValue();
//单元格内容不相同时重新赋值合并的初始行
firstRow=i;
num++;
}
}
//在合并最后一组相同的单元格内容时由于读取到最大行也没有出现不相同的单元格内容,所有需要再此处进行合并一下最后一组相同的单元格
//起始行就是上一组的截至行,而截至行就是读取到的行数减去1(因为下标从0开始)
sheet.addMergedRegion(new CellRangeAddress(firstRow, rows-1, 0, 0));
System.err.println("最后一次合并,从第"+firstRow+"至第"+(rows-1)+"行");
FileOutputStream fileOutputStream=new FileOutputStream(file);
workbook.write(fileOutputStream);
fileOutputStream.close();
}
java导出excel合并单元格(行合并)
于 2023-07-06 15:21:01 首次发布
这段代码展示了如何使用ApachePOI库在Java中处理Excel文件。它读取指定路径的xlsx文件,遍历工作表中的单元格,当遇到内容改变时,合并相同内容的单元格。程序最后将更新的工作簿写回原文件。
摘要由CSDN通过智能技术生成