2016-10-27 18 views
0

apache poi를 사용하여 특정 셀을 출력 끝에 병합하려는 통합 문서를 만들고 있습니다. mergeRegion 함수를 사용하고 있으며 셀이 병합 중입니다. 행의 마지막에 병합되지 않고, 항상 이전에 한 줄,poi의 마지막 행에 셀을 병합하는 방법

내가 여기에 화면 내가 셀이 제대로 병합 할 merged cell

를 부착하고 종료되며, 여기

을 내 코드를 게시하고
for(MarshActiveUser marshActiveUser : listOfMarshUser){ 

      /***/ 
      sheet.addMergedRegion(new CellRangeAddress(
        j, //first row (0-based) 
        j, //last row (0-based) 
        18, //first column (0-based) 
        20 //last column (0-based) 
        )); 
      /***/ 

      int columnNo = 0; 
      row = sheet.createRow(j+1); 
      cell = row.createCell(columnNo); 
      cell.setCellValue(new HSSFRichTextString(String.valueOf(row.getRowNum()))); 
      lockedCellStyle.setFont(hSSFFont); 
      sheet.autoSizeColumn(0); 
      cell.setCellStyle(lockedCellStyle); 
      columnNo = 1; 
      cell = row.createCell(columnNo); 

      if(null != marshActiveUser.getFistName()){ 

       cell.setCellValue(new HSSFRichTextString(marshActiveUser.getFistName())); 
       lockedCellStyle.setFont(hSSFFont); 
       sheet.autoSizeColumn(1); 
       cell.setCellStyle(lockedCellStyle); 

      }else{ 
       cell.setCellValue(new HSSFRichTextString(" ")); 
       cell.setCellStyle(lockedCellStyle); 
      } 

나는 rowCount +1하지만 코드에서 허용되지 않습니다. 제발 도와주세요. 미리 감사드립니다.

+0

가 대신 J의 연속 + 1 = sheet.createRow (J + 1) ++ 게시물을 증가 J와 코드 위에 시도해 봤어; ?? – Khuzi

+0

@Khuzi하지만 한 행을 건너 뜁니다. – storyteller

답변

2

rowCount 증가에 문제가 있습니다. 미리 행 개수를 증가 시키면 병합을 위해 마지막 행을 건너 뜁니다. 증분이 rowcount++이고 예상대로 작동하도록 변경했습니다.

import java.io.FileOutputStream; 
import java.io.IOException; 

import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.hssf.util.CellRangeAddress; 
import org.apache.poi.ss.usermodel.Cell; 
import org.apache.poi.ss.usermodel.Row; 

public class SimpleExcelWriterExample { 

public static void main(String[] args) throws IOException { 
    HSSFWorkbook workbook = new HSSFWorkbook(); 
    HSSFSheet sheet = workbook.createSheet("Java Books"); 

     Object[][] bookData = { 
       {"Head First Java", "Kathy Serria", 79}, 
       {"Effective Java", "Joshua Bloch", 36}, 
       {"Clean Code", "Robert martin", 42}, 
       {"Thinking in Java", "Bruce Eckel", 35}, 
     }; 

     int rowCount = 1; 

     for (Object[] aBook : bookData) { 

      /***/ 
      sheet.addMergedRegion(new CellRangeAddress(
        rowCount, //first row (0-based) 
        rowCount, //last row (0-based) 
         3, //first column (0-based) 
         5 //last column (0-based) 
        )); 
      /***/ 
      Row row = sheet.createRow(rowCount++); 

      int columnCount = 0; 

      for (Object field : aBook) { 
       Cell cell = row.createCell(++columnCount); 
       if (field instanceof String) { 
        cell.setCellValue((String) field); 
       } else if (field instanceof Integer) { 
        cell.setCellValue((Integer) field); 
       } 
      } 

     } 


     try{ 
      FileOutputStream outputStream = new FileOutputStream("D://JavaBooks.xls"); 
      workbook.write(outputStream); 
     }catch(Exception e){} 

}} 

출력 :

enter image description here

+0

덕분에이 코드 조각을 얻은 솔루션 덕분에 작동하지 않는 다른 코드 조각에 솔루션을 적용하고 있습니다. 내 게시물을 편집하고 있습니다. 한 번만 보시기 바랍니다. – storyteller

관련 문제