4

問題は、アプリケーションを実行していて、グリッド(文字列と日付列を含む)があり、Excelファイルとして保存している場合です。

初めて保存するとすべてが正しくフォーマットされますが、同じ正確なグリッドをもう一度保存しようとすると、日付のフォーマットがなくなります(右クリックしてdateTimeオブジェクトにフォーマットすると、単なる浮動小数点値になります)動作します)。アプリを再起動すると、初めてアプリが再び機能し、その後再びフォーマットが失われます

コードは次のようになります。

Calendar calendar = Calendar.getInstance();

calendar.setTime((Date)data);
            Date gmtDate = new Date(((Date) data).getTime() + (calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET)));

writableCell = new jxl.write.DateTime(sheetColumn, sheetRow, gmtDate, jxl.write.DateTime.GMT);

cellFormat = new jxl.write.WritableCellFormat (new jxl.write.DateFormat("m/d/yyyy h:mm");

writableCell.setCellFormat(cellFormat);

sheet.addCell(writableCell);

私はブレークポイントを維持し、すべてが本来あるべき状態であるため(dateTimeシートに入る前にタイプであることが常にわかっていました)、コードからのものではないと思います。

他の誰かがこの問題に遭遇しましたか?

4

3 に答える 3

2

これを試して:

cellFormat = new jxl.write.WritableCellFormat (new jxl.write.DateFormat("MM/dd/yyyy hh:mm");
于 2012-06-16T01:11:29.060 に答える
0

あなたの質問は"jExcelApi - cell date format reusing does not work"に似ているようです。おそらく、その質問への回答が問題の解決に役立ちます。

回答の再説明: FAQ (質問: 「「異なるセル形式が多すぎます」というエラー メッセージが表示されます」) によると、形式はこのように再利用するように設計されていないため、別のシートで再利用することはできません。

あなたの場合、コードは次のようになります。

WritableCellFormat format = new jxl.write.WritableCellFormat(new jxl.write.DateFormat("m/d/yyyy h:mm"));
for(java.util.Date date : someDateList){
  WritableCell cell = new jxl.write.DateTime(someColumn, someRow, date, format);
  sheet.addCell(cell);
}
于 2014-08-21T06:06:41.120 に答える