Apache POIを使って、Excelファイルに保存されている画像を、ファイルに保存(エクスポート)する方法を紹介します。
スポンサーリンク
はじめに
今回紹介するサンプルコードの実装イメージです。
この記事のタイトルの通りですが、EXCELブックに張り付けられている全ての画像を、指定したディレクトリに保存(エクスポート)します。
↑ 実装イメージ
サンプルコード
早速、サンプルコードを書いていきます。
//EXCELブックを開く
FileInputStream in = new FileInputStream("sample.xls");
POIFSFileSystem fs = new POIFSFileSystem(in);
HSSFWorkbook wb = new HSSFWorkbook(fs);
int cnt = 1;
//対象EXCELブックの画像の数だけ繰り返し
for (HSSFPictureData pic : wb.getAllPictures()) {
//画像の保存先
String savePath = String.format("c:\\temp\\%d.%s", cnt++, pic.suggestFileExtension());
//EXCELの画像データをByte[]配列で取得
byte[] data = pic.getData();
//画像データをファイルに書き出す
FileOutputStream out = new FileOutputStream(savePath);
out.write(data);
out.close();
}
サンプルは、HSSFクラス(.xlsを扱うクラス)でのサンプルですが、.xlsxに対応する場合は、HSSF の部分を、XSSF に変えればOKです。
補足
コードを見てもらえれば、大体分かると思いますが、紹介したコードの特記すべき点について、補足します
画像のフォーマット(拡張子)を取得する
ファイルを作成する際、画像のフォーマットに合わせてjpg/png
などの拡張子を付ける必要があります。
POIでは、HSSFPictureData#suggestFileExtension()
で画像フォーマットに対応する拡張子を返してくれます。
スポンサーリンク
さいごに
今回紹介したコードを使えば、「Excelに張り付けた、画像の元データを紛失してしまった!!」といった場合に、画像ファイルの復元として使えそうです。
0 件のコメント:
コメントを投稿