简单说明:
1.Excel生成流程:excel-->sheet-->row-->cell
2.索引从0
开始
3.合并单元格后,保留左上角单元格(单元格B3被单元格B2覆盖)
4.合并后,通过RegionUtil设置单元格边框。如果删除以下代码
- // 使用 RegionUtil 类为合并单元格添加边框
- RegionUtil.setBorderBottom(1, cra, Sheet); // 下边框
- RegionUtil.setBorderLeft(1, cra, Sheet); // 左边框
- RegionUtil.setBorderRight(1, cra, Sheet); // 有边框
- RegionUtil.setBorderTop(1, cra, Sheet); //上边框
效果是:
您可以看到只有单元格 B2 有边框。
java poi 合并单元格
- XSSFWorkbook wb = new XSSFWorkbook();
- XSSFSheet 表 = wb.createSheet();
- //这是合并后的单元格
- //参数说明: 1:起始行 2:结束行 3:起始列 4:结束列
- //比如我要合并第二行到第四行,第六列到第八列,sheet.addMergedRegion(new CellRangeAddress(1,3,5,7));
- sheet.addMergedRegion(new CellRangeAddress(0,0,0,1));
- XSSFRow行=sheet.createRow(number);
注意事项(如有不对请告诉我)
感觉唯一需要注意的是需要先设置合并单元格,然后生成行。
例如我们要生成的cell是:
1 个工作站 |
左侧位置 |
1 个序列号 |
2000 订单号 |
1 产品编号/型号 |
左侧位置 |
2 序列号 |
左侧位置 |
3 序列号 |
正确位置 |
4 序列号 |
代码可以这样写:
- sheet.addMergedRegion(new CellRangeAddress(0,3,0,0));
- sheet.addMergedRegion(new CellRangeAddress(0,3,3,3));
- sheet.addMergedRegion(new CellRangeAddress(0,3,4,4));
- //第一行数据
- XSSFRow行=sheet.createRow(0);
- row.createCell(0).setCellValue("工作站");
- row.createCell(1).setCellValue("位置");
- row.createCell(2).setCellValue("序列号");
- row.createCell(3).setCellValue("订单号");
- row.createCell(4).setCellValue("产品编号/型号");
- //第二行数据
- XSSFRow行=sheet.createRow(number);
- //row.createCell(0).setCellValue("Workstation");//因为和上面的行合并了,所以不需要再次赋值
- row.createCell(1).setCellValue("位置");
- row.createCell(2).setCellValue("序列号");
- //row.createCell(3).setCellValue("订单号");//因为和上面的行合并了,所以不需要再次赋值
- //row.createCell(4).setCellValue("产品编号/型号");//因为和上面的行合并了,所以不需要再次赋值
第三行数据与第二行相同
-->