Apache POI – HSSF – セルに値と書式を設定するには
セルに値を設定するには、HSSFCellクラスのsetCellValueメソッドを使用します。
また、セルに書式を設定するには、HSSFCellStyleクラス、HSSFDataFormatクラスを使用します。
package net.tk_factory.example.apache.poi.hssf.cell;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import net.tk_factory.example.AbstractExample;
import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
* Apache POI-HSSFを使用したサンプルプログラムです。
*
* 内容
*
-
*
- セルにboolean型の値を設定します。
- セルにCalendar型の値を設定します。
- セルにDate型の値を設定します。
- セルにdouble型の値を設定します。
- セルにString型の値を設定します。
*
*
*
*
*
* @author Takafumi Kondo (TK Factory)
*/
public class ExampleSetCellValue extends AbstractExample
{
/** クラス名 */
private static final String CLASS_NAME =
ExampleSetCellValue.class.getSimpleName();
/** ロガー */
private static final Logger LOGGER =
Logger.getLogger(ExampleSetCellValue.class.getName());
/** 出力ファイル名 */
private static final String OUT_FILE_NAME =
EXAMPLE_FILE_DIRECTORY + CLASS_NAME + “Out.xls”;
/**
* ExampleSetCellValueオブジェクトを構築すると、
* UnsupportedOperationExceptionがスローされます。
*/
protected ExampleSetCellValue()
{
throw new UnsupportedOperationException();
}
/**
* mainメソッドです。
*
* @param args 引数
*/
public static void main(String[] args)
{
LOGGER.info(“[START]” + CLASS_NAME);
FileOutputStream out = null;
try
{
//すでに出力ファイルが存在している場合は削除する
deleteExistsFile(OUT_FILE_NAME);
//ワークブックを生成する
HSSFWorkbook workbook = new HSSFWorkbook();
//シートを追加する
HSSFSheet sheet = workbook.createSheet();
//行を追加する
HSSFRow[] rows = new HSSFRow[5];
for (int i = 0; i < rows.length; i++)
{
rows[i] = sheet.createRow(i);
}
//boolean型の値を設定する
HSSFCell cell00 = rows[0].createCell(0);
boolean val00 = true;
cell00.setCellValue(val00);
//Calendar型の値を設定する
HSSFCell cell10 = rows[1].createCell(0);
Calendar val10 = Calendar.getInstance();
cell10.setCellValue(val10);
//書式を指定してCalendar型の値を設定する
HSSFCellStyle styleCalendar = workbook.createCellStyle();
HSSFDataFormat formatCalendar = workbook.createDataFormat();
styleCalendar.setDataFormat(formatCalendar.getFormat("yyyy/mm/dd"));
HSSFCell cell11 = rows[1].createCell(1);
Calendar val11 = Calendar.getInstance();
cell11.setCellStyle(styleCalendar);
cell11.setCellValue(val11);
//Date型の値を設定する
HSSFCell cell20 = rows[2].createCell(0);
Date val20 = new Date();
cell20.setCellValue(val20);
//書式を指定してDate型の値を設定する
HSSFCellStyle styleDate = workbook.createCellStyle();
HSSFDataFormat formatDate = workbook.createDataFormat();
styleDate.setDataFormat(formatDate.getFormat("yyyy/mm/dd hh:mm"));
HSSFCell cell21 = rows[2].createCell(1);
Date val21 = new Date();
cell21.setCellStyle(styleDate);
cell21.setCellValue(val21);
//double型の値を設定する
HSSFCell cell30 = rows[3].createCell(0);
double val30 = 1234.56;
cell30.setCellValue(val30);
//書式を指定してdouble型の値を設定する
HSSFCellStyle styleDouble = workbook.createCellStyle();
HSSFDataFormat formatDouble = workbook.createDataFormat();
styleDouble.setDataFormat(formatDouble.getFormat("#,##0.00"));
HSSFCell cell31 = rows[3].createCell(1);
double val31 = 1234.56;
cell31.setCellStyle(styleDouble);
cell31.setCellValue(val31);
//String型の値を設定する
HSSFCell cell40 = rows[4].createCell(0);
HSSFRichTextString val40 = new HSSFRichTextString("Test");
cell40.setCellValue(val40);
//String型の値(日本語)を設定する
HSSFCell cell41 = rows[4].createCell(1);
HSSFRichTextString val41 = new HSSFRichTextString("テスト");
cell41.setCellValue(val41);
//ファイルを保存する
out = new FileOutputStream(OUT_FILE_NAME);
workbook.write(out);
}
catch (IOException ioex)
{
LOGGER.error(getStackTrace(ioex));
}
finally
{
try
{
if (out != null)
{
out.close();
}
}
catch (IOException ioex)
{
LOGGER.error(getStackTrace(ioex));
}
LOGGER.info("[E N D]" + CLASS_NAME);
}
}
}
[/java]
作成されたファイルを開くと、以下のように表示されます。
関連記事
サンプルプログラムを実行して作成されたファイルのイメージを追加しました。
ソースを見直し、一部、修正しました。