Apache POI3.8のライブラリでExcelに画像を埋め込みます。(失敗しました)
【手順】
1.「Javaプロジェクトの作成方法」の手順で、「POIExcelSample009-InsertImageNG」といプロジェクトを作成。
2.「poi-3.8-20120326.jarをライブラリに設定する方法」の手順で、プロジェクトに「poi-3.8-20120326.jar」のライブラリを追加。
3.「poi-3.8-20120326.jarに依存するライブラリの設定する方法」の手順で、プロジェクトに「commons-logging-1.1.jar」と「log4j-1.2.13.jar」のライブラリを追加。
4.「Javaクラスファイルの作成方法」の手順で、「Main」というクラスを作成。
5.「Main.java」を以下の様に入力。
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFCreationHelper;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFPicture;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.util.IOUtils;
public class Main {
private static final String IMAGE_FILE = "poi-image.jpg";
private static final String OUTPUT_FILE = "InsertImage.xls";
public static void main(String[] args) throws Exception {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
FileInputStream inputImage = new FileInputStream(IMAGE_FILE);
byte[] bytes = IOUtils.toByteArray(inputImage);
int pictureIndex = wb.addPicture(bytes, HSSFWorkbook.PICTURE_TYPE_JPEG);
inputImage.close();
HSSFCreationHelper helper = (HSSFCreationHelper) wb.getCreationHelper();
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
HSSFClientAnchor anchor = helper.createClientAnchor();
anchor.setCol1(1);
anchor.setRow1(1);
HSSFPicture picture = patriarch.createPicture(anchor, pictureIndex);
picture.resize();
FileOutputStream fileOut = new FileOutputStream(OUTPUT_FILE);
wb.write(fileOut);
fileOut.close();
}
}
6.「Ctrl+Shift+O」を押し、パッケージのインポート文を補完。7.「Ctrl+Shift+F」を押し、ソースコードをフォーマッティング。
9.「Javaプロジェクトの実行方法」の手順で、「Main.java」を実行。
10.コンソール以下のエラーが出力されてます。
(※コンソールが表示されていない場合は、「コンソール・ビューの表示方法」を確認)
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/codec/digest/DigestUtils
at org.apache.poi.hssf.usermodel.HSSFWorkbook.addPicture(HSSFWorkbook.java:1580)
at Main.main(Main.java:22)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.codec.digest.DigestUtils
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 2 more
【結論】
「java.lang.NoClassDefFoundError」ということなので、クラスが見つかりませんというエラー。
「org/apache/commons/codec/digest/DigestUtils」が見つからないクラス。
どうやら、Apache CommonsのCodecライブラリが必要な様です。
以上です。
-01.png)
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。