2015-11-11 12 views
6
Cell cell = row.createCell(1); 
    cell.setCellValue(rdf.getEffectiveDate()); 
    cell.getCellStyle().setDataFormat(HSSFDataFormat.getBuiltinFormat("d-mmm-yy")); 

    cell = row.createCell(2); 
    cell.setCellValue(rdf.getExpiryDate()); 
    cell.getCellStyle().setDataFormat(HSSFDataFormat.getBuiltinFormat("d-mmm-yy")); 

    row.createCell(3).setCellValue(rdf.getPremium()); 
    row.createCell(4).setCellValue(rdf.getAccountNumber()); 
    row.createCell(5).setCellValue(rdf.getLedgerName()); 

Ho voluto applicare il formato data su due delle colonne precedenti. Ma viene applicato a tutte le celle. Come posso evitare questo.Apache Stile PDI applicato a tutte le celle

risposta

12

Come afferma la documentazione, Cell.getCellStyle() non restituirà mai null.

https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Cell.html#getCellStyle()

Quando nessuno stile cella è stato esplicitamente impostato per un cellulare allora tornerà lo stile di cella di default che inizialmente è condiviso tra tutte le celle nella cartella di lavoro. Cambiando questo allora ovviamente interesserà tutte le celle che non hanno uno stile assegnato esplicitamente.

È necessario creare un nuovo CellStyle e quindi assegnarlo alle celle pertinenti.

Dalla guida sviluppatore POI:

https://poi.apache.org/spreadsheet/quick-guide.html#CreateDateCells

Workbook wb = new HSSFWorkbook(); 
    //Workbook wb = new XSSFWorkbook(); 
    CreationHelper createHelper = wb.getCreationHelper(); 
    Sheet sheet = wb.createSheet("new sheet"); 

    // Create a row and put some cells in it. Rows are 0 based. 
    Row row = sheet.createRow(0); 

    // Create a cell and put a date value in it. The first cell is not styled 
    // as a date. 
    Cell cell = row.createCell(0); 
    cell.setCellValue(new Date()); 

    // we style the second cell as a date (and time). It is important to 
    // create a new cell style from the workbook otherwise you can end up 
    // modifying the built in style and effecting not only this cell but other cells. 
    CellStyle cellStyle = wb.createCellStyle(); 
    cellStyle.setDataFormat(
     createHelper.createDataFormat().getFormat("m/d/yy h:mm")); 
    cell = row.createCell(1); 
    cell.setCellValue(new Date()); 
    cell.setCellStyle(cellStyle); 

    //you can also set date as java.util.Calendar 
    cell = row.createCell(2); 
    cell.setCellValue(Calendar.getInstance()); 
    cell.setCellStyle(cellStyle); 

    // Write the output to a file 
    FileOutputStream fileOut = new FileOutputStream("workbook.xls"); 
    wb.write(fileOut); 
    fileOut.close(); 
+0

Grazie. Ho perso 5 ore su questo. Hai salvato la giornata. –

3

Prova a creare di un nuovo stile di cella. Penso che potresti cambiare lo stile predefinito. Quindi, qualcosa di simile ...

CellStyle dateTimeCS = wb.createCellStyle(); 
dateTimeCS.setDataFormat(HSSFDataFormat.getBuiltinFormat("d-mmm-yy")); 
cell.setCellStyle(dateTimeCS); 
Problemi correlati