当前位置: 首页 > 知识库问答 >
问题:

向POI XSSF工作簿中的合并区域添加边框

邴英毅
2023-03-14

我使用的是ApachePOI3.7,我需要将边框放在一系列单元格或合并区域上。

当工作表和工作簿类型为XSSF时,如何将边框应用于合并区域。在HSSF类型中,我使用区域用户-/HSSF区域用户,但是如果在XSSF类型中使用第一个对象(区域用户),它就不起作用,并将黑色背景颜色添加到单元格范围。

Area onutil通常与CellRange地址一起工作,我找不到有关此问题的信息。我不知道CellRangeAdres是否会导致这种情况。

共有3个答案

乜飞航
2023-03-14
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);

    }
}
施靖
2023-03-14
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);
    }


}
李弘光
2023-03-14

为此,必须向合并区域中的每个单元格添加一个空白单元格,然后向每个单元格添加适当的边框。例如,以下代码将在同一行中创建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));
 类似资料:
  • 我正在使用ApachePOI,发现当我使用HSSFRegionUtil向合并的单元格添加边框时,只会显示一个单元格的边框。 下面是代码 它只显示一个单元格的单元格边框,而不显示区域边框。感谢您的帮助。

  • 问题内容: 我是Apache POI Java开发的新手,我正在尝试使用以下代码在Excel中添加水印。但是水印标识会覆盖其后面的内容。我想在背景中添加水印。 您能帮我告诉我如何在excel中添加水印(在XSSF或HSSF工作簿中)或在exel标头中添加图片吗? 感谢Mudassir 问题答案: Microsoft Excel没有内置的水印功能。但是,有两种方法可以模拟水印的外观 ..不幸的是,a

  • 问题内容: 我已经浏览了几乎所有以前的线程,但是仍然无法正常工作。我正在尝试向现有工作簿中添加新工作表。我的代码有效,但是它继续添加更多(实际上很多)工作表。我不知道解决方案。下面是我的代码 问题答案: 如果要向现有电子表格中添加工作表,只需继续并将新工作表添加到文件中,而不是复制对象并尝试向其中添加新工作表。

  • 所以我有 1500 个 Excel 工作簿,每个工作簿都有 10 张结构完全相同的工作表。我尝试将多个Excel工作簿合并到一个文件中,并使用以下代码成功: 谢谢,努尔贝克

  • 我试图使用apache POI、使用primefaces和java在现有的excel工作簿中创建一个新的工作表,但是到目前为止还没有成功。谁能告诉我这是怎么做的吗?我可以做单张 下面的代码是我为在一个xls文件中创建多个工作表而编写的,我给出的条件是它没有大于65535的of行创建新工作表并迭代它,但它显示错误 警告:允许范围(0..65535)之外的无效行号(65536)java.lang.Il

  • 我可以添加文本和段落到word中,也可以用文本替换任何合并字段,但我需要添加一个新的合并字段使用docx4j来创建一个word模板。我怎么能这么做? 是否使用添加合并字段。如果是,怎么做? 从这里我可以看到MergeField在xml元素w:fldsimple中,所以我可能需要像这样创建这个xml: 任何帮助都是非常感谢的!