※このページではアフィリエイト広告を紹介しています

Apache POIでExcel / PowerPointのファイルを開く

Java小ネタ
この記事は約4分で読めます。
広告

想定する読者

ライブラリApache POIに対して、どのクラスを最初に利用すれば良いかの取っ掛かりが難しいと感じている方

概要

Apache POIには、拡張子の違いを気にせずにExcelファイルやPowerPointファイルを読み込む便利なクラスがあります。

一方、Wordファイルにはそのような便利なクラスはなさそうです。

Apache POIの執筆時点(2021/10/28時点)の最新版は5.0.0です。下記3つのライブラリを使用します。

  • poi-5.0.0.jar
  • poi-ooxml-5.0.0.jar
  • poi-scratchpad-5.0.0.jar

詳細

Excelファイル

Excelファイルを読み込むときは、WorkbookFactoryクラスを使います。

拡張子が xlsx と xls のどちらであるかを気にしなくてもうまく読み込んでくれます。

WorkbookFactoryクラスが、下記から適切なクラスのWorkbookを自動的に選んで返してくれます。

  • XSSFWorkbookクラス : 拡張子xlsxのファイルを扱うクラス。poi-ooxml-5.0.0.jarが必要
  • HSSFWorkbookクラス : 拡張子xlsのファイルを扱うクラス。poi-5.0.0.jarが必要
import java.io.File;
import java.io.IOException;

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class ExcelReader {

	public static void main(String[] args) throws IOException {
		try (Workbook workbook = 
				WorkbookFactory.create(new File("[ファイルパス]"))) {
			// 処理を書く
		}
	}
}
WorkbookFactory#createメソッドの引数には、InputStreamクラスを渡すこともできます。

PowerPointファイル

PowerPointファイルを読み込むときは、SlideShowFactoryクラスを使います。

拡張子が pptx と ppt のどちらであるかを気にしなくてもうまく読み込んでくれます。

SlideShowFactoryクラスが、下記から適切なクラスのSlideShowを自動的に選んで返してくれます。

  • XMLSlideShowクラス : 拡張子pptxのファイルを扱うクラス。poi-ooxml-5.0.0.jarが必要
  • HSLFSlideShowクラス : 拡張子pptのファイルを扱うクラス。poi-scratchpad-5.0.0.jarが必要
import java.io.File;
import java.io.IOException;

import org.apache.poi.sl.usermodel.SlideShow;
import org.apache.poi.sl.usermodel.SlideShowFactory;

public class PowerPointReader {

	public static void main(String[] args) throws IOException {
		try (SlideShow<?, ?> slideshow =
				SlideShowFactory.create(new File("[ファイルパス]"))) {
			// 処理を書く
		}
	}
}
SlideShowFactory#createメソッドの引数には、InputStreamクラスを渡すこともできます。

Wordファイル

Wordファイルを読み込むときに便利な「~~Factoryクラス」は存在しませんでした。拡張子 docx と doc のどちらであるかによって、下記クラスのAPIを呼び分ける必要があります。

  • XWPFDocumentクラス : 拡張子docxのファイルを扱うクラス。poi-ooxml-5.0.0.jarが必要
  • HWPFDocumentクラス : 拡張子docのファイルを扱うクラス。poi-scratchpad-5.0.0.jarが必要

コメント

タイトルとURLをコピーしました