2012-03-18 7 views
15

Witam czytam plik csv i otrzymuję datę 01-01-2011, ale chcę go w formacie 01-Jan-2011, kiedy piszę plik .xlsx przy użyciu biblioteki apache poi. mój kod toApache poi format daty

XSSFDataFormat df = workBook.createDataFormat(); 
cs.setDataFormat(df.getFormat("dd-MMM-yy")); 

ale to nie działa dla mnie. gdzie ja się mylę.

+0

Przepraszam, ale co to jest CS? – Leo

+0

@Leo Jest to XSSFCellStyle – stg

Odpowiedz

22

Nie tylko trzeba utworzyć format komórki, ale także zastosować go do komórki!

XSSFDataFormat df = workBook.createDataFormat(); 
cs.setDataFormat(df.getFormat("d-mmm-yy")); 

// Get/Create our cell 
XSSFRow row = sheet.createRow(2); 
XSSFCell cell = row.createCell(3); 

// Set it to be a date 
Calendar c = Calendar.getInstance(); 
c.set(2012,3-1,18); // Don't forget months are 0 based on Calendar 
cell.setCellValue(c.getTime()); 

// Style it as a date 
cell.setCellStyle(cs); 

Po drugie, należy pamiętać, że Java i Excel różnią się nieznacznie sposobem wyrażania reguł formatowania daty. Powinieneś otworzyć kopię programu Excel, sformatować komórkę próbną, jak chcesz, a następnie zanotować wymagane reguły formatowania. W twoim przypadku poszedłeś na duże litery w stylu Java M, podczas gdy w Excelu jest to małe (patrz wyżej)