11

私は apache poi 3.7 を使用しています。境界線をセル範囲または結合領域に配置する必要があります。

シートとワークブックの種類が XSSF の場合、マージされた領域に境界線を適用するにはどうすればよいですか。HSSF タイプでは RegionUtil-/HSSFRegionutil を使用しますが、XSSF タイプで最初のオブジェクト (Regionutil) を使用すると機能せず、セルの範囲に黒い背景色が表示されます。

Regionutil は通常、CellRangeAddress で動作しますが、この問題に関する情報は見つかりません。CellRangeAddres が原因かどうかはわかりません。

4

4 に答える 4

23

これを行うには、結合された領域のすべてのセルに空白のセルを追加してから、各セルに適切な境界線を追加する必要があります。たとえば、次のコードは、同じ行に 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));
于 2012-10-03T12:10:25.300 に答える
4

複数の行に対してこれを行います。

Workbook wb = new HSSFWorkbook();

// create a new sheet
Sheet sheet = wb.createSheet();


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 sheet1 = wb.createSheet("Test Sheet");
Row row = null;
Cell cell;
for (int i = 1; i <= 5; ++i) {
    row = sheet1.createRow(i);
    for(int j=1;j<=5;j++){
        cell= row.createCell(j);
        cell.setCellStyle(borderStyle);
        if (i == 1 && j==1) {
            cell.setCellValue("Centred Text");
        } 
    }
}
sheet1.addMergedRegion(new CellRangeAddress(1, 5, 1, 5));
于 2014-04-14T10:37:19.783 に答える