2011-06-24 23 views
4

Apacheのpoiを使用して正しい形式で日付を取得するのに問題があります。3.7 ドキュメントによると、私はDataFormatterのformatCellValueメソッドを使用する必要があります。 ここで私は同じことをアドバイスするいくつかの答えを見つけましたが、うまくいきません。Apache POI date dd.MM.yyyy

エクセルフィールド形式dd.MM.yyyyで日付を示しています。元のために:09.06.2010

formatCellValue(電池セル)を使用した後、私は9/6/10を取得します。 私はここでLocal.GermanととせずにDataFormatterとHSSFDataFormatterを試すかLocal.German

は私のコードです:

if(DateUtil.isCellDateFormatted(cell)) 
{ 
    HSSFDataFormatter formatter = new HSSFDataFormatter(Locale.GERMAN); 
    String temp = formatter.formatCellValue(cell); 
    System.out.println(temp); 
} 

誰かが私を助けることができますか?

+0

"dd-MM-yyyy:ex:09.06.2010" - これは意味がありません。フォーマット文字列とサンプル日付が互換性がないためです。実際に使用しているフォーマット文字列は何ですか? – Gagravarr

+0

oh申し訳ありませんが、 私はdd.MM.yyyyを使用しています。 – Rafael

答えて

2

私は確信していませんが、デフォルトの日付書式の書式文字列をオーバーライドしている可能性があります。

これはPOI 3.8ベータ1(changelogを参照)でのみ修正されていますので、3.8 beta3にアップグレードしてみてください。以前は、POIはデフォルトのフォーマットが変更されていないと仮定していたため、デフォルトのフォーマット文字列を使用していました。

+0

ありがとうございました。 POI 3.8ベータ3のアップデートは役に立たない。 Excelの列の書式を確認しました。タイプはdd.MM.yyyyですが、アスタリスクでマークされています。これは、フォーマットがオペレーティングシステムの地域情報に依存していることを意味します。たぶんこれが理由かもしれません。 – Rafael

+0

それを明示的に設定してみてください。 – Gagravarr

+0

誰もこれをまだ解決していますか?読み込まれているExcelは、私たちの管理下にありません。 astrriks(*)を使用してDate形式が上記のように指定されている場合は、デフォルトでOSレベルのロケールが使用されます。 DataFormaterをオーバーライドして独自の形式を取る方法はありませんか? –