1. ホーム
  2. java

[解決済み] セルの値を日付に設定し、Excelのデフォルトの日付フォーマットを適用するにはどうすればよいですか?

2022-11-07 04:44:05

質問

私はしばらくの間、既存の Excel 2003 ファイルをプログラムで読み込むために Apache POI を使用してきました。現在、私はメモリ内で全体の .xls ファイルを作成し(まだ Apache POI を使用しています)、最後にファイルにそれらを書き込むという新しい要件があります。私の行く手を阻む唯一の問題は、日付のあるセルの処理です。

次のコードを考えてみてください。

Date myDate = new Date();
HSSFCell myCell;
// code that assigns a cell from an HSSFSheet to 'myCell' would go here...
myCell.setCellValue(myDate);

このセルを含むワークブックをファイルに書き出し、Excelで開くと、セルが数字として表示されます。はい、私は、Excel が「日付」を 1900 年 1 月 1 日からの日数として保存し、それがセル内の数字を表すものであることを理解しています。

質問: POIでどのAPIコールを使えば、日付セルにデフォルトの日付フォーマットを適用させたいことを伝えることができますか?

理想的には、ユーザーが手動で Excel でスプレッドシートを開き、Excel が日付として認識するセル値を入力した場合に、Excel が割り当てたであろう同じデフォルトの日付形式でスプレッドシートセルが表示されるようにしたいのです。

どのように解決するのですか?

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

CellStyle cellStyle = wb.createCellStyle();
CreationHelper createHelper = wb.getCreationHelper();
cellStyle.setDataFormat(
    createHelper.createDataFormat().getFormat("m/d/yy h:mm"));
cell = row.createCell(1);
cell.setCellValue(new Date());
cell.setCellStyle(cellStyle);