2012-03-18 15 views
15

こんにちは私はcsvファイルを読んでいて、01-01-2011に日付を取得していますが、Apacheのpoiライブラリを使用して.xlsxファイルを書き込むと、2011年1月1日の形式になります。私のコードはApache poiの日付形式

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

ですが、私のためには機能しません。どこが間違っているのですか?

+0

申し訳ありませんが、csとは何ですか? – Leo

+0

@LeoそれはXSSFCellStyleです – stg

答えて

22

セルフォーマットを作成するだけでなく、セルフォーマットも適用する必要があります。

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); 

第2に、JavaとExcelが日付書式設定ルールをどのように表現するかが若干異なることに注意する必要があります。 Excelのコピーを開き、必要なサンプルセルをフォーマットしてから、必要な書式設定のルールを書き留めてください。あなたのケースでは、Javaスタイルの大文字Mに移行しましたが、Excelでは小文字です(上記参照)