トッカンソフトウェア

Excel出力(Apache POI)

外部ライブラリを使用するとExcelファイルの読み書きができます。Excelを取り扱うライブラリはいくつかありますが、
最もメジャーと思われる、Apache POIをやります。


ライブラリの取得

https://poi.apache.org/download.htmlでJarファイル(Zip)を取得します。



上記よりダウンロードして解凍したら、中にある poi-3.14-20160307.jar、poi-ooxml-3.14-20160307.jar、
poi-ooxml-schemas-3.14-20160307.jar、xmlbeans-2.6.0.jar をEclipseのビルドパスに追加します。

※xmlbeans-2.6.0.jarはooxml-libフォルダにあります。
※バージョンによりファイル名が変わります。それらしいファイルを使用して下さい。
※ある解凍ソフトで解凍したら解凍できませんでした。Windows標準の解凍機能を使用したら解凍できました。







ライブラリの取得(Maven)

Mavenを使えば簡単に環境構築できます。
				
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>mvnTest</groupId>
	<artifactId>mvnTest</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<build>
		<sourceDirectory>src</sourceDirectory>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.3</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<dependencies>
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi</artifactId>
			<version>3.14</version>
		</dependency>
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-ooxml</artifactId>
			<version>3.14</version>
		</dependency>
	</dependencies>
</project>

			


単純なExcel読み込みサンプル

				
package test;

import java.io.FileOutputStream;

import org.apache.poi.ss.usermodel.Cell;
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.xssf.usermodel.XSSFWorkbook;

public class PoiTest {
	public static void main(String[] args) {

		// ワークブック作成
		Workbook book = new XSSFWorkbook();

		// シート作成
		Sheet sheet = book.createSheet("しーと");

		// 行作成
		Row row = sheet.createRow(0);

		// セル作成
		Cell cell = row.createCell(0);

		// セルに値セット
		cell.setCellValue("test");

		// ファイルに保存
		String filename = "C:\\work\\hp\\workbook.xlsx";

		try (FileOutputStream out = new FileOutputStream(filename);) {
			book.write(out);
			book.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


			
作成Excelイメージ(実際にはLibreOfficeのCalc)


XSSFWorkbookでワークブックを作成し、createSheetでシートを作成します。

createRowで行を作成し、createCellでセルを作成します。両方とも開始は0になります。

値をセットするにはsetCellValueを使用します。

createSheetの引数ではシート名を指定できますが、省略することもできます。

フォント、スタイルなどを指定

				
package test;

import java.io.FileOutputStream;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;
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.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class PoiTest {
	public static void main(String[] args) {

		// ワークブック作成
		Workbook book = new XSSFWorkbook();

		// シート作成
		Sheet sheet = book.createSheet("しーと");

		// 行作成
		Row row = sheet.createRow(0);

		// セル作成
		Cell cell = row.createCell(0);
		Cell cell2 = row.createCell(3);

		// セルに値セット
		cell.setCellValue("てすと");
		cell2.setCellValue("一二三四五");

		// フォントの作成
		Font font = book.createFont();

		// フォント名の指定
		font.setFontName("MS P明朝");

		// フォントサイズの指定
		font.setFontHeightInPoints((short) 18);

		// フォントの色の指定
		font.setColor(IndexedColors.RED.index);

		// 太字の指定
		font.setBoldweight(Font.BOLDWEIGHT_BOLD);

		// イタリックの指定
		font.setItalic(true);

		// アンダーラインの指定
		font.setUnderline(Font.U_SINGLE);

		// 取り消し線の指定
		font.setStrikeout(true);

		// スタイルの作成
		CellStyle style = book.createCellStyle();

		// フォントセット
		style.setFont(font);

		// 背景色の指定
		style.setFillForegroundColor(IndexedColors.YELLOW.index);
		style.setFillPattern(CellStyle.SOLID_FOREGROUND);

		// 枠線の指定(上)
		style.setBorderTop(CellStyle.BORDER_THIN);

		// 枠線の指定(下)
		style.setBorderBottom(CellStyle.BORDER_THIN);

		// 枠線の指定(左)
		style.setBorderLeft(CellStyle.BORDER_THIN);

		// 枠線の指定(右)
		style.setBorderRight(CellStyle.BORDER_THIN);

		// 横位置-中央
		style.setAlignment(CellStyle.ALIGN_CENTER);

		// 縦位置-中央
		style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);

		// 改行
		style.setWrapText(true);

		// セルにスタイルのセット
		cell.setCellStyle(style);

		// 改行
		style.setWrapText(true);

		cell2.setCellStyle(style);

		// 行の高さ指定
		row.setHeightInPoints(55);

		// 列の幅指定
		sheet.setColumnWidth(3, 256 * 10);

		// 幅の自動調整
		sheet.autoSizeColumn(0);

		// セルを結合する
		sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 1));

		// ファイルに保存
		String filename = "C:\\work\\hp\\workbook.xlsx";

		try (FileOutputStream out = new FileOutputStream(filename);) {
			book.write(out);
			book.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


			

作成Excelイメージ(実際にはLibreOfficeのCalc)

フォントの指定

				
// フォントの作成
Font font = book.createFont();

// フォント名の指定
font.setFontName("MS P明朝");

// フォントサイズの指定
font.setFontHeightInPoints((short) 18);

// フォントの色の指定
font.setColor(IndexedColors.YELLOW.index);

// スタイルの作成
CellStyle style = book.createCellStyle();

// フォントセット
style.setFont(font);


			
フォントはワークブックより作成します。フォント名は以下のようなものがあります。 フォントの色は以下があります。

フォントスタイルの指定

				
// フォントの作成
Font font = book.createFont();

// 太字の指定
font.setBoldweight(Font.BOLDWEIGHT_BOLD);

// イタリックの指定
font.setItalic(true);

// アンダーラインの指定
font.setUnderline(Font.U_SINGLE);

// 取り消し線の指定
font.setStrikeout(true);

// スタイルの作成
CellStyle style = book.createCellStyle();

// フォントセット
style.setFont(font);


			

セルスタイルの指定

				
// スタイルの作成
CellStyle style = book.createCellStyle();

// 背景色の指定
style.setFillForegroundColor(IndexedColors.BLACK.index);
style.setFillPattern(CellStyle.SOLID_FOREGROUND);


// 枠線の指定(上)
style.setBorderTop(CellStyle.BORDER_THIN);

// 枠線の指定(下)
style.setBorderBottom(CellStyle.BORDER_THIN);

// 枠線の指定(左)
style.setBorderLeft(CellStyle.BORDER_THIN);

// 枠線の指定(右)
style.setBorderRight(CellStyle.BORDER_THIN);


// 横位置-中央
style.setAlignment(CellStyle.ALIGN_CENTER);

// 縦位置-中央
style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);


// 改行
style.setWrapText(true);

// セルにスタイルのセット
cell.setCellStyle(style);


			
背景色の指定はフォント色と同じです。
setWrapTextにtrueを指定すると文字列が長くなったときに自動的に改行されます。

シート、行、列を隠す

				
package test;

import java.io.FileOutputStream;

import org.apache.poi.ss.usermodel.Cell;
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.xssf.usermodel.XSSFWorkbook;

public class PoiTest {
	public static void main(String[] args) {

		// ワークブック作成
		Workbook book = new XSSFWorkbook();

		// シート作成
		Sheet sheet = book.createSheet("しーと");
		book.createSheet("しーと2");

		// 行作成
		Row row0 = sheet.createRow(0);
		Row row1 = sheet.createRow(1);
		// セル作成
		Cell cell0 = row0.createCell(0);
		Cell cell1 = row1.createCell(1);

		// セルに値セット
		cell0.setCellValue("test0");
		cell1.setCellValue("test1");

		// シートを隠す(0~を指定。しーと2を隠す)
		book.setSheetHidden(1, true);

		// 列を隠す(0~を指定。A列を隠す)
		sheet.setColumnHidden(0, true);

		// 行を隠す
		row1.setZeroHeight(true);

		// ファイルに保存
		String filename = "C:\\work\\hp\\workbook.xlsx";

		try (FileOutputStream out = new FileOutputStream(filename);) {
			book.write(out);
			book.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

			

その他の設定

				
// シート作成
Sheet sheet = book.createSheet("しーと");

// 行作成
Row row = sheet.createRow(0);

// 行の高さ指定
row.setHeightInPoints(55);

// 列の幅指定
sheet.setColumnWidth(3, 256 * 10);

// 幅の自動調整
sheet.autoSizeColumn(0);

// セルを結合する
sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 1));


			
CellRangeAddressは結合する範囲を指定します(開始行, 終了行, 開始列, 終了列)。


ページのトップへ戻る