L’aggiunta di confine con la fusione di regione in poi XSSF cartella di lavoro

Sto usando apache poi 3.7 e ho bisogno di mettere la frontiera a un intervallo di celle o unita regione.

come posso fare per applicare il bordo di una unita regione quando il foglio e la cartella di lavoro è di tipo XSSF. In HSSF tipo io uso RegionUtil-/HSSFRegionutil, ma se uso il primo oggetto (Regionutil) in XSSF tipo non funziona e mette un colore di sfondo nero per l’intervallo di celle.

Regionutil ussually funziona con CellRangeAddress e non riesco a trovare informazioni su questo problema. Non so se il CellRangeAddres causa di questo.

 

4 Replies
  1. 21

    Per fare questo, è necessario aggiungere una cella vuota per ogni cella unita regione, quindi aggiungere i bordi appropriati per ogni cella. Per esempio, il codice seguente crea una unita regione di 5 celle nella stessa riga, con un bordo intorno l’intera unita regione, e il testo centrato nella regione.

    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));
    • Cosa fare se viene unito anche riga saggio. cioè, come 3 righe sono unite, quindi, che dovrebbe essere fatto. Si prega di suggerire.
  2. 4
    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);
        }
    
    
    }
  3. 4

    Fare questo per più righe.

    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));
  4. 1

    @Jesanagua appena salvato la mia vita, ho dovuto cambiare un po ‘ per la corrispondenza 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);
    
        }
    }

Lascia un commento