NoClassDefFoundError在Android应用程序中使用Apache poi和MS Excel插入图像时

我想用Apache poi在我的Excel表格中插入一个PNG图像。

要做到这一点,我使用这个代码:

//add picture data to this workbook. InputStream is = new FileInputStream("/sdcard/MYAPPFOLDER/logo_app.png"); byte[] bytes = IOUtils.toByteArray(is); int pictureIdx = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG); is.close(); CreationHelper helper = workbook.getCreationHelper(); // Create the drawing patriarch. This is the top level container for all shapes. Drawing drawing = sheet.createDrawingPatriarch(); //add a picture shape ClientAnchor anchor = helper.createClientAnchor(); //set top-left corner of the picture, //subsequent call of Picture#resize() will operate relative to it anchor.setCol1(0); anchor.setRow1(0); Picture pict = drawing.createPicture(anchor, pictureIdx); //auto-size picture relative to its top-left corner pict.resize(); 

但在第一次我有一个错误,我已经通过添加这个库commons-codec-1.8.jar解决了,现在我有这个错误:

 02-21 10:10:51.466: E/AndroidRuntime(31691): FATAL EXCEPTION: main 02-21 10:10:51.466: E/AndroidRuntime(31691): java.lang.NoClassDefFoundError: java.awt.Dimension 02-21 10:10:51.466: E/AndroidRuntime(31691): at org.apache.poi.ss.util.ImageUtils.getImageDimension(ImageUtils.java:52) 02-21 10:10:51.466: E/AndroidRuntime(31691): at org.apache.poi.hssf.usermodel.HSSFPicture.getImageDimension(HSSFPicture.java:243) 02-21 10:10:51.466: E/AndroidRuntime(31691): at org.apache.poi.hssf.usermodel.HSSFPicture.getPreferredSize(HSSFPicture.java:163) 

哪一点指向这一行:

 pict.resize(); 

我该如何解决?

您不能使用涉及graphics例程的纯Java库( java.awt ),因为Android没有实现它们,因为它使用了它自己的graphics库。 底线是,你不能使用Android所需的库,但我相信还有其他方法可以完成你想要做的任务。

Android使用一些基本types,即ViewCanvasDrawable 。 看看这些,看看他们是否满足您的需求。

不能在Android中使用 java.awt.*包,而是使用Android UI元素 。 在这里查看相关问题