1、使用poi合并单元格
public static void main(String[] args) throws Exception { // 定义一个工作簿 Workbook workbook = new XSSFWorkbook(); // 创建一个sheet页 Sheet sheet = workbook.createSheet("第一个sheet页"); // 创建一个行 Row row = sheet.createRow(0); // 创建单元格 row.createCell(0).setCellValue("测试内容"); row.createCell(1).setCellValue("测试内容2"); // 合并单元格,合并后的内容取决于合并区域的左上角单元格的值 CellRangeAddress region = new CellRangeAddress(0,3,0,3); sheet.addMergedRegion(region); FileOutputStream fileOutputStream = new FileOutputStream("D:\用poi测试合并单元格.xlsx"); workbook.write(fileOutputStream); fileOutputStream.close(); }
合并结果如图:
2、为合并后的单元格添加边框线
(注意:合并后的单元格会保留原先合并区域左上单元格的居中样式,但是不会保留原先单元格的边框线,所以合并单元格之后,需要重新为合并后的单元格添加边框线)
/** * 为合并后的单元格添加边框线 * @param cra 合并区域 * @param sheet sheet */ private static void addMergeCellBorder(CellRangeAddress cra, Sheet sheet) { RegionUtil.setBorderTop(BorderStyle.THIN,cra,sheet); RegionUtil.setBorderBottom(BorderStyle.THIN,cra,sheet); RegionUtil.setBorderLeft(BorderStyle.THIN,cra,sheet); RegionUtil.setBorderRight(BorderStyle.THIN,cra,sheet); } public static void main(String[] args) throws Exception { // 定义一个工作簿 Workbook workbook = new XSSFWorkbook(); // 创建一个sheet页 Sheet sheet = workbook.createSheet("第一个sheet页"); // 创建一个行 Row row = sheet.createRow(0); // 创建单元格 row.createCell(0).setCellValue("测试内容"); row.createCell(1).setCellValue("测试内容2"); // 合并单元格,合并后的内容取决于合并区域的左上角单元格的值 CellRangeAddress region = new CellRangeAddress(0,3,0,3); sheet.addMergedRegion(region); // 为合并后的单元格添加边框线 addMergeCellBorder(region, sheet); FileOutputStream fileOutputStream = new FileOutputStream("D:\用poi测试合并单元格2.xlsx"); workbook.write(fileOutputStream); fileOutputStream.close(); }
结果如图: