无法在 Android 中将图像导出到 excel

Posted

技术标签:

【中文标题】无法在 Android 中将图像导出到 excel【英文标题】:Unable to export image to excel in Android 【发布时间】:2012-05-13 14:00:05 【问题描述】:

我尝试使用以下代码在 android 上的 excel 中导出图像,但出现错误。正在复制logcat...请帮忙!!

代码:

        package com.android.testexcel;

        import java.io.ByteArrayOutputStream;
        import java.io.FileInputStream;
        import java.io.FileOutputStream;
        import java.io.IOException;

        import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
        import org.apache.poi.hssf.usermodel.HSSFPatriarch;
        import org.apache.poi.hssf.usermodel.HSSFSheet;
        import org.apache.poi.hssf.usermodel.HSSFWorkbook;

        public class MyWorkBook 
            void writeImageToExcel(String filePath, String imageFileName) 
                int col = 1, row = 1;
                HSSFWorkbook wb = new HSSFWorkbook();
                HSSFSheet testsheet = wb.createSheet("test");
                System.out.println("The work book is created");
                try 
                    FileOutputStream fos = new FileOutputStream(filePath);
                    System.out.println("File sample.xls is created");
                    FileInputStream fis = new FileInputStream(imageFileName);
                    ByteArrayOutputStream img_bytes = new ByteArrayOutputStream();
                    int b;
                    while ((b = fis.read()) != -1)
                        img_bytes.write(b);
                    fis.close();
                    HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0,
                            (short) col, row, (short) ++col, ++row);
                    int index = wb.addPicture(img_bytes.toByteArray(),
                            HSSFWorkbook.PICTURE_TYPE_JPEG);
                    HSSFSheet sheet = wb.getSheet("test");
                    HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
                    patriarch.createPicture(anchor, index);
                    anchor.setAnchorType(2);
                    wb.write(fos);
                    System.out.println("Writing data to the xls file");
                    fos.close();
                    System.out.println("File closed");
                 catch (IOException ioe) 

                    System.out
                            .println("Hi ! You got an exception. " + ioe.getMessage());
                    ioe.printStackTrace();
                
            
        // end of class MyWorkBook

Logcat:

05-13 19:11:47.665:E/AndroidRuntime(7288):致命异常:主要 05-13 19:11:47.665: E/AndroidRuntime(7288): java.lang.NoClassDefFoundError: org.apache.commons.codec.digest.DigestUtils 05-13 19:11:47.665: E/AndroidRuntime(7288): 在 org.apache.poi.hssf.usermodel.HSSFWorkbook.addPicture(HSSFWorkbook.java:1580) 05-13 19:11:47.665: E/AndroidRuntime(7288): 在 com.android.testexcel.MyWorkBook.writeImageToExcel(MyWorkBook.java:30) 05-13 19:11:47.665: E/AndroidRuntime(7288): 在 com.android.testexcel.MainActivity.onClick(MainActivity.java:71) 05-13 19:11:47.665: E/AndroidRuntime(7288): 在 android.view.View.performClick(View.java:2408) 05-13 19:11:47.665: E/AndroidRuntime(7288): 在 android.view.View$PerformClick.run(View.java:8816) 05-13 19:11:47.665: E/AndroidRuntime(7288): 在 android.os.Handler.handleCallback(Handler.java:587) 05-13 19:11:47.665: E/AndroidRuntime(7288): 在 android.os.Handler.dispatchMessage(Handler.java:92) 05-13 19:11:47.665: E/AndroidRuntime(7288): 在 android.os.Looper.loop(Looper.java:123) 05-13 19:11:47.665: E/AndroidRuntime(7288): 在 android.app.ActivityThread.main(ActivityThread.java:4627) 05-13 19:11:47.665: E/AndroidRuntime(7288): 在 java.lang.reflect.Method.invokeNative(Native Method) 05-13 19:11:47.665: E/AndroidRuntime(7288): 在 java.lang.reflect.Method.invoke(Method.java:521) 05-13 19:11:47.665: E/AndroidRuntime(7288): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 05-13 19:11:47.665: E/AndroidRuntime(7288): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 05-13 19:11:47.665: E/AndroidRuntime(7288): at dalvik.system.NativeStart.main(Native Method)

提前致谢, 赫曼特

【问题讨论】:

【参考方案1】:

你的错误的关键部分是:

java.lang.NoClassDefFoundError: org.apache.commons.codec.digest.DigestUtils

您需要确保在项目中包含公共编解码器。请参阅Apache POI Components Page 了解 POI 的所有不同位的依赖关系列表。 (或者,如果您使用 Maven,它会为您处理)

【讨论】:

这个问题类似于***.com/questions/9126567/… 我仍然找不到编辑源文件的最佳方法。谁能帮我解决这个问题?

以上是关于无法在 Android 中将图像导出到 excel的主要内容,如果未能解决你的问题,请参考以下文章

无法在javascript中将图像绘制到画布

如何在 C# 中将文件导出到 excel 2007+

在 C# 中将 OracleDataReader 导出到 Excel

在 s-s-rS 中将报告导出到 Excel

从 MS Access 中将交叉表查询结果导出到 Excel

如何在asp.net mvc中将Webcontrol表导出到excel