Cha*_*ori 11 java poi-hssf apache-poi xssf
我正在使用apache poi 3.7,我需要将边框放到一系列单元格或合并区域.
当工作表和工作簿类型为XSSF时,如何将边框应用于合并区域.在HSSF类型中,我使用RegionUtil-/HSSFRegionutil,但是如果在XSSF类型中使用第一个对象(Regionutil),则它不起作用并将黑色背景颜色放入单元格范围.
Regionutil通常使用CellRangeAddress,我找不到有关此问题的信息.我不知道CellRangeAddres是否会导致这种情况.
Wee*_*and 21
为此,您必须向合并区域中的每个单元格添加一个空白单元格,然后为每个单元格添加适当的边框.例如,以下代码将在同一行中创建一个包含5个单元格的合并区域,其中边框围绕整个合并区域,文本以区域为中心.
XSSFWorkbook wb = new XSSFWorkbook();
CellStyle borderStyle = wb.createCellStyle();
borderStyle.setBorderBottom(CellStyle.BORDER_THIN);
borderStyle.setBorderLeft(CellStyle.BORDER_THIN);
borderStyle.setBorderRight(CellStyle.BORDER_THIN);
borderStyle.setBorderTop(CellStyle.BORDER_THIN);
borderStyle.setAlignment(CellStyle.ALIGN_CENTER);
Sheet sheet = wb.createSheet("Test Sheet");
Row row = sheet.createRow(1);
for (int i = 1; i <= 5; ++i) {
Cell cell = row.createCell(i);
cell.setCellStyle(borderStyle);
if (i == 1) {
cell.setCellValue("Centred Text");
}
}
sheet.addMergedRegion(new CellRangeAddress(1, 1, 1, 5));
Run Code Online (Sandbox Code Playgroud)
小智 8
private void setBordersToMergedCells(XSSFWorkbook workBook, XSSFSheet sheet) {
int numMerged = sheet.getNumMergedRegions();
for(int i= 0; i<numMerged;i++){
CellRangeAddress mergedRegions = sheet.getMergedRegion(i);
RegionUtil.setBorderTop(CellStyle.BORDER_THIN, mergedRegions, sheet, workBook);
RegionUtil.setBorderLeft(CellStyle.BORDER_THIN, mergedRegions, sheet, workBook);
RegionUtil.setBorderRight(CellStyle.BORDER_THIN, mergedRegions, sheet, workBook);
RegionUtil.setBorderBottom(CellStyle.BORDER_THIN, mergedRegions, sheet, workBook);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
@Jesanagua 刚刚救了我的命,我只需要稍微改变一下就可以匹配 3.17。
private void setBordersToMergedCells(HSSFSheet sheet) {
int numMerged = sheet.getNumMergedRegions();
for (int i = 0; i < numMerged; i++) {
CellRangeAddress mergedRegions = sheet.getMergedRegion(i);
RegionUtil.setBorderLeft(BorderStyle.THIN, mergedRegions, sheet);
RegionUtil.setBorderRight(BorderStyle.THIN, mergedRegions, sheet);
RegionUtil.setBorderTop(BorderStyle.THIN, mergedRegions, sheet);
RegionUtil.setBorderBottom(BorderStyle.THIN, mergedRegions, sheet);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27767 次 |
最近记录: |