sonar5のプロフィール

@sonar5 sonar5
ありがとう数0
質問数0
回答数1
ベストアンサー数
0
ベストアンサー率
0%
お礼率
0%

  • 登録日2009/09/28
  • POIでExcelに時刻(h:mm)の値を出力したい

    お世話になっております。 現在JAVA勉強という名目でEXCELで運用している社内勤務表をWebから入力できるシステムを開発しています。(好みによりExcel直接編集とWebによる編集どちらかを選べる) 現状の問題としてはPOIライブラリにより勤務開始時間、勤務終了時間の値をExcelのセルに出力するところで h:mm (例えば[10:30])という値が出力できないことです。(既存の書式に合わせた値の出力ができない) 文字列(先頭に'が付く)やシリアル値として出力することは可能ですが、ただ単純に[10:30]と出力することができません。 【実現したいExcelの出力結果】(JavaのString文字列"10:30"を元に出力) 値:[10:30] 表示:[10:30] ※Excelのセルは表示と値が異なる場合があるが両方共 h:mm 形式で出力したい。 【試行錯誤した出力結果】 (1)文字列として出力する 値:['10:30] 表示:[10:30] ※表示は期待通りだが値の先頭に'がついてしまいうまくいかない。 ※出力した値は他のセルの計算式で参照するので'がついてるのは問題あり。 (2)Date型で出力し書式を h:mm 形式にする 値:[613666:30:00] 表示:[10:30] ※表示は期待通りだが値がシリアル値になってしまいうまくいかない。 ※ただし m/d/yy h:mm 形式を出力するとシリアル値にならない。(何故だろう) ※シリアル値ではExcel直接編集の際に人が編集しにくい値なので問題。 実際Excelでは値も表示も[10:30]というセルはキーボード入力で簡単に作成できるのでPOIで出力できないとはとても思えません。 どうすれば[10:30]という値が出力できるか教えていただけないでしょうか。 よろしくお願いいたします。 ----------------------------------------------------------------------- 【使用しているPOI】 バージョン:3.2 ダウンロードしたファイル:poi-bin-3.2-FINAL-20081019.zip ----------------------------------------------------------------------- 【試行錯誤したプログラム】 public class CellOutput{ public static void main(String[] args){ HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(); HSSFRow row = sheet.createRow(1); HSSFCellStyle style = workbook.createCellStyle(); style.setDataFormat(HSSFDataFormat.getBuiltinFormat("h:mm")); try { // テスト1(文字列で出力) HSSFCell cell1 = row.createCell((short)0); cell1.setCellValue("10:30"); // テスト2(Dateで出力 書式設定無) HSSFCell cell2 = row.createCell((short)1); SimpleDateFormat hhmmFormat = new SimpleDateFormat("h:mm"); Date time = hhmmFormat.parse("10:30"); cell2.setCellValue(time); // テスト3(Dateで出力 書式設定有) HSSFCell cell3 = row.createCell((short)2); cell3.setCellValue(time); cell3.setCellStyle(style); // テスト4(Dateで出力 m/d/yy h:mm形式) HSSFCell cell4 = row.createCell((short)3); HSSFCellStyle style2 = workbook.createCellStyle(); style2.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")); cell4.setCellValue(time); cell4.setCellStyle(style2); } catch(Exception e){ } FileOutputStream out = null; try{ out = new FileOutputStream("sample.xls"); workbook.write(out); }catch(IOException e){ System.out.println(e.toString()); }finally{ try { out.close(); }catch(IOException e){ System.out.println(e.toString()); } } } } -----------------------------------------------------------------------

    • ベストアンサー
    • Java
    • estmo
    • 回答数3