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

#環境
## java
- java7

## Apache Poi
- [3.14](https://archive.apache.org/dist/poi/release/bin/poi-bin-3.14.zip)

# 文字列を日付、時刻としてセルに設定する
文字列を日付、時刻として設定する場合には[org.apache.poi.ss.usermodel.DateUtil](http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/DateUtil.html)を使います
##時刻をセルに設定する
Excelファイルの元の内容はこんな感じ
![base.PNG](https://qiita-image-store.s3.amazonaws.com/0/148022/a144fecb-a081-3284-8191-0fac54a79691.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](https://qiita-image-store.s3.amazonaws.com/0/148022/aae78c61-9df6-0f61-3b5b-f9c5397df99f.png)

重要なのはDateUtil.convertTimeを使って[シリアル値](http://www3.tokai.or.jp/excel/kansu/hiduke.htm)に変換する処理です
引数に使える文字列の形式は"HH:MM"か"HH:MM:SS"
それ以外の形式だとIllegalArgumentExceptionが発生します

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

##日付をセルに設定する
Excelファイルの元の内容はこんな感じです
![base2.PNG](https://qiita-image-store.s3.amazonaws.com/0/148022/4dd3816d-f5e3-6820-57de-b08066855618.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](https://qiita-image-store.s3.amazonaws.com/0/148022/1708fa8f-91b2-4316-5c2f-c815fa07da68.png)


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

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