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ライブラリが必要な様です。
以上です。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。