LoginSignup
4
1

More than 5 years have passed since last update.

POIで文字列から日付、時刻の設定をする

Posted at

環境

java

  • java7

Apache Poi

文字列を日付、時刻としてセルに設定する

文字列を日付、時刻として設定する場合にはorg.apache.poi.ss.usermodel.DateUtilを使います

時刻をセルに設定する

Excelファイルの元の内容はこんな感じ
base.PNG

C3のセルにはユーザ定義(h:mm)を設定してあります
C3のセルに6:45を設定するコード

Sample.java
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) {
            //なんらかの処理をする
        }
    }

実行後
time.PNG

重要なのはDateUtil.convertTimeを使ってシリアル値に変換する処理です
引数に使える文字列の形式は"HH:MM"か"HH:MM:SS"
それ以外の形式だとIllegalArgumentExceptionが発生します

セルに値を入れる時に使用しているメソットはsetCellValue(double)を使っています

日付をセルに設定する

Excelファイルの元の内容はこんな感じです
base2.PNG

C2のセルにはユーザ定義(yyyy"年"m"月"d"日")を設定してあります
C2のセルに2016年05月15日を設定するコードです

Sample.java
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) {
            //なんらかの処理をする
        }

    }

実行後
date.PNG

重要なのはDateUtil.parseYYYYMMDDDateを使ってjava.uti.Dateに変換する処理です
引数に使える文字列の形式は"YYYY/MM/DD"のみで
それ以外の形式だとIllegalArgumentExceptionが発生します

セルに値を入れる時に使用しているメソットはsetCellValue(java.util.Date)を使っています

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1