#環境
java
- java7
Apache Poi
文字列を日付、時刻としてセルに設定する
文字列を日付、時刻として設定する場合にはorg.apache.poi.ss.usermodel.DateUtilを使います
##時刻をセルに設定する
Excelファイルの元の内容はこんな感じ
C3のセルにはユーザ定義(h:mm)を設定してあります
C3のセルに6:45を設定するコード
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
public static void main(String[] args) {
try(Workbook book = WorkbookFactory.create(Sample.class.getResourceAsStream("sample.xlsx"));
OutputStream out = new FileOutputStream("sample.xlsx");) {
Sheet sheet = book.getSheetAt(0);
Row row = sheet.getRow(2);
Cell cell = row.getCell(2);
//文字列をシリアル値に変換
double time = DateUtil.convertTime("06:45");
//時刻を設定
cell.setCellValue(time);
book.write(out);
}catch(Exception err) {
//なんらかの処理をする
}
}
重要なのはDateUtil.convertTimeを使ってシリアル値に変換する処理です
引数に使える文字列の形式は"HH:MM"か"HH:MM:SS"
それ以外の形式だとIllegalArgumentExceptionが発生します
セルに値を入れる時に使用しているメソットはsetCellValue(double)を使っています
##日付をセルに設定する
Excelファイルの元の内容はこんな感じです
C2のセルにはユーザ定義(yyyy"年"m"月"d"日")を設定してあります
C2のセルに2016年05月15日を設定するコードです
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Date;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
public static void main(String[] args) {
try(Workbook book = WorkbookFactory.create(Sample.class.getResourceAsStream("sample.xlsx"));
OutputStream out = new FileOutputStream("sample.xlsx");) {
Sheet sheet = book.getSheetAt(0);
Row row = sheet.getRow(1);
Cell cell = row.getCell(2);
//設定したい値をDate型に変換
Date date = DateUtil.parseYYYYMMDDDate("2016/05/15");
//日付を設定
cell.setCellValue(date);
book.write(out);
}catch(Exception ex) {
//なんらかの処理をする
}
}
重要なのはDateUtil.parseYYYYMMDDDateを使ってjava.uti.Dateに変換する処理です
引数に使える文字列の形式は"YYYY/MM/DD"のみで
それ以外の形式だとIllegalArgumentExceptionが発生します
セルに値を入れる時に使用しているメソットはsetCellValue(java.util.Date)を使っています