Java ApachePOI安卓

Java ApachePOI安卓,java,android,excel,apache-poi,Java,Android,Excel,Apache Poi,我在Android应用程序中使用了ApachePOI,但是HSSFWorkbook有问题 我只想读取安卓平板电脑内存中的Excel文件。 (在Android应用程序中显示数据) 我的代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { AssetManager assetManager = this.getAss

我在Android应用程序中使用了
ApachePOI
,但是
HSSFWorkbook
有问题

我只想读取安卓平板电脑内存中的Excel文件。 (在Android应用程序中显示数据)

我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);



try {
    AssetManager assetManager = this.getAssets();
    InputStream input = assetManager.open("test42.XLS");

    HSSFWorkbook classeur = new HSSFWorkbook(input);

    //HSSFSheet feuille = classeur.getSheetAt(0);

    //Cell cell = feuille.getRow(1).getCell(1);

    //String value = cell.getStringCellValue();

    TextView tv = new TextView(this);


    tv.setText("Test");

    setContentView(tv);

} catch (IOException e) {
    e.printStackTrace();
    System.out.println("prob");

}

}
日志:

01-28 14:09:55.036: E/dalvikvm(6919): Could not find class 'org.apache.xmlbeans.XmlOptions', referenced from method org.apache.poi.POIXMLDocumentPart.<clinit>

01-28 14:09:55.036: W/dalvikvm(6919): VFY: unable to resolve new-instance 2751 (Lorg/apache/xmlbeans/XmlOptions;) in Lorg/apache/poi/POIXMLDocumentPart;

01-28 14:09:55.036: D/dalvikvm(6919): VFY: replacing opcode 0x22 at 0x0008

01-28 14:09:55.056: E/AndroidRuntime(6919): FATAL EXCEPTION: main

01-28 14:09:55.056: E/AndroidRuntime(6919): java.lang.ExceptionInInitializerError

01-28 14:09:55.056: E/AndroidRuntime(6919):     at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:72)

01-28 14:09:55.056: E/AndroidRuntime(6919):     at android.app.Activity.performCreate(Activity.java:5267)

01-28 14:09:55.056: E/AndroidRuntime(6919):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)

01-28 14:09:55.056: E/AndroidRuntime(6919):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)

01-28 14:09:55.056: E/AndroidRuntime(6919):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2295)

01-28 14:09:55.056: E/AndroidRuntime(6919):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)

01-28 14:09:55.056: E/AndroidRuntime(6919):     at java.lang.reflect.Method.invokeNative(Native Method)
01-28 14:09:55.036:E/dalvikvm(6919):找不到从方法org.apache.poi.poimmldocumentpart引用的类“org.apache.xmlbeans.XmlOptions”。
01-28 14:09:55.036:W/dalvikvm(6919):VFY:无法解析Lorg/apache/xmlbeans/XmlOptions;中的新实例2751(Lorg/apache/xmlbeans/XmlOptions;);
01-28 14:09:55.036:D/dalvikvm(6919):VFY:在0x0008处替换操作码0x22
01-28 14:09:55.056:E/AndroidRuntime(6919):致命异常:主
01-28 14:09:55.056:E/AndroidRuntime(6919):java.lang.ExceptionInInitializeError
01-28 14:09:55.056:E/AndroidRuntime(6919):位于org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:72)
01-28 14:09:55.056:E/AndroidRuntime(6919):在android.app.Activity.performCreate(Activity.java:5267)上
01-28 14:09:55.056:E/AndroidRuntime(6919):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)上
01-28 14:09:55.056:E/AndroidRuntime(6919):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
01-28 14:09:55.056:E/AndroidRuntime(6919):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2295)
01-28 14:09:55.056:E/AndroidRuntime(6919):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)
01-28 14:09:55.056:E/AndroidRuntime(6919):位于java.lang.reflect.Method.Invokenactive(本机方法)
新的原木类别:

01-29 10:00:44.809: I/dalvikvm(7833): Could not find method org.apache.commons.codec.digest.DigestUtils.md5, referenced from method org.apache.poi.hssf.usermodel.HSSFWorkbook.addPicture

01-29 10:00:44.809: W/dalvikvm(7833): VFY: unable to resolve static method 6355: Lorg/apache/commons/codec/digest/DigestUtils;.md5 ([B)[B

01-29 10:00:44.809: D/dalvikvm(7833): VFY: replacing opcode 0x71 at 0x0004

01-29 10:00:44.829: W/System.err(7833): java.io.IOException: Invalid header signature; read 0x0010000000060409, expected 0xE11AB1A1E011CFD0

01-29 10:00:44.829: W/System.err(7833):     at org.apache.poi.poifs.storage.HeaderBlock.<init>(HeaderBlock.java:140)

01-29 10:00:44.829: W/System.err(7833):     at org.apache.poi.poifs.storage.HeaderBlock.<init>(HeaderBlock.java:104)

01-29 10:00:44.829: W/System.err(7833):     at 

org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:138)
01-29 10:00:44.829: W/System.err(7833):     at 


org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:322)
01-29 10:00:44.829: W/System.err(7833):     at 

org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:303)

01-29 10:00:44.829: W/System.err(7833):     at com.example.test.MainActivity.onCreate(MainActivity.java:41)

01-29 10:00:44.829: W/System.err(7833):     at android.app.Activity.performCreate(Activity.java:5267)

01-29 10:00:44.829: W/System.err(7833):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)


01-29 10:00:44.829: W/System.err(7833):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)

01-29 10:00:44.829: W/System.err(7833):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2295)

01-29 10:00:44.829: W/System.err(7833):     at android.app.ActivityThread.access$700(ActivityThread.java:150)


01-29 10:00:44.829: W/System.err(7833):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)

01-29 10:00:44.829: W/System.err(7833):     at android.os.Handler.dispatchMessage(Handler.java:99)

01-29 10:00:44.829: W/System.err(7833):     at 
android.os.Looper.loop(Looper.java:176)

01-29 10:00:44.829: W/System.err(7833):     at android.app.ActivityThread.main(ActivityThread.java:5279)

01-29 10:00:44.829: W/System.err(7833):     at java.lang.reflect.Method.invokeNative(Native Method)

01-29 10:00:44.829: W/System.err(7833):     at java.lang.reflect.Method.invoke(Method.java:511)


01-29 10:00:44.829: W/System.err(7833):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)

01-29 10:00:44.829: W/System.err(7833):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)

01-29 10:00:44.829: W/System.err(7833):     at dalvik.system.NativeStart.main(Native Method)


01-29 10:00:44.899: W/ResourceType(7833): Failure getting entry for 0x01080a03 (t=7 e=2563) in package 0 (error -75)

01-29 10:00:44.999: D/libEGL(7833): loaded /vendor/lib/egl/libEGL_POWERVR_SGX544_115.so

01-29 10:00:45.049: D/libEGL(7833): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX544_115.so

01-29 10:00:45.059: D/libEGL(7833): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX544_115.so

01-29 10:00:45.129: D/OpenGLRenderer(7833): Enabling debug mode 0
01-29 10:00:44.809:I/dalvikvm(7833):找不到方法org.apache.commons.codec.digest.DigestUtils.md5,该方法引用自方法org.apache.poi.hssf.usermodel.HSSFWorkbook.addPicture
01-29 10:00:44.809:W/dalvikvm(7833):VFY:无法解析静态方法6355:Lorg/apache/commons/codec/digest/DigestUtils;。md5([B)[B
01-29 10:00:44.809:D/dalvikvm(7833):VFY:在0x0004处替换操作码0x71
01-29 10:00:44.829:W/System.err(7833):java.io.IOException:头签名无效;读取0x0010000000060409,应为0xE11AB1A1E011CFD0
01-29 10:00:44.829:W/System.err(7833):位于org.apache.poi.poifs.storage.HeaderBlock.(HeaderBlock.java:140)
01-29 10:00:44.829:W/System.err(7833):位于org.apache.poi.poifs.storage.HeaderBlock.(HeaderBlock.java:104)
01-29 10:00:44.829:W/系统错误(7833):在
org.apache.poi.poifs.filesystem.poifsffilesystem.(poifsffilesystem.java:138)
01-29 10:00:44.829:W/系统错误(7833):在
org.apache.poi.hssf.usermodel.HSSFWorkbook.(HSSFWorkbook.java:322)
01-29 10:00:44.829:W/系统错误(7833):在
org.apache.poi.hssf.usermodel.HSSFWorkbook.(HSSFWorkbook.java:303)
01-29 10:00:44.829:W/System.err(7833):位于com.example.test.MainActivity.onCreate(MainActivity.java:41)
01-29 10:00:44.829:W/System.err(7833):位于android.app.Activity.performCreate(Activity.java:5267)
01-29 10:00:44.829:W/System.err(7833):位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
01-29 10:00:44.829:W/System.err(7833):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
01-29 10:00:44.829:W/System.err(7833):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2295)
01-29 10:00:44.829:W/System.err(7833):在android.app.ActivityThread.access$700(ActivityThread.java:150)
01-29 10:00:44.829:W/System.err(7833):位于android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)
01-29 10:00:44.829:W/System.err(7833):位于android.os.Handler.dispatchMessage(Handler.java:99)
01-29 10:00:44.829:W/系统错误(7833):在
Looper.loop(Looper.java:176)
01-29 10:00:44.829:W/System.err(7833):位于android.app.ActivityThread.main(ActivityThread.java:5279)
01-29 10:00:44.829:W/System.err(7833):位于java.lang.reflect.Method.invokenactive(本机方法)
01-29 10:00:44.829:W/System.err(7833):位于java.lang.reflect.Method.invoke(Method.java:511)
01-29 10:00:44.829:W/System.err(7833):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
01-29 10:00:44.829:W/System.err(7833):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
01-29 10:00:44.829:W/System.err(7833):在dalvik.System.NativeStart.main(本机方法)
01-29 10:00:44.899:W/ResourceType(7833):获取包0中0x01080a03(t=7 e=2563)的条目失败(错误-75)
01-29 10:00:44.999:D/libEGL(7833):已加载/供应商/lib/egl/libEGL\u POWERVR\u SGX544\u 115.so
01-29 10:00:45.049:D/libEGL(7833):已加载/供应商/lib/egl/libGLESv1\u CM\u POWERVR\u SGX544\u 115.so
01-29 10:00:45.059:D/libEGL(7833):已加载/供应商/lib/egl/libGLESv2\u POWERVR\u SGX544\u 115.so
01-29 10:00:45.129:D/OpenGLRenderer(7833):启用调试模式0
使用Workboook factory创建修井作业


请参阅
文件与输入流部分

为xls文件尝试以下操作:

   try {
                InputStream caInput = new BufferedInputStream(getAssets().open(
                        "ie_data.xls"));
                HSSFWorkbook workbook = new HSSFWorkbook(caInput);
                HSSFSheet feuille = workbook.getSheetAt(0);

                Cell cell = feuille.getRow(1).getCell(1);

                String value = cell.getNumericCellValue()+"";
                Toast.makeText(getApplicationContext(), value, Toast.LENGTH_LONG)
                        .show();
            } catch (IOException e1) {
                // TODO Auto-generated catch block


e1.printStackTrace();
        }
对于xlsx:

1-导入以下jar文件:

(dom4j-1.6.1.jar、poi-ooxml-3.5-FINAL.jar、poi-ooxml-schemas-3.8-beta4.jar、poi-3.9-20121203.jar、xmlbeans-2.3.0.jar)

第二步-在try-catch块内执行以下操作:

如果正在使用文件对象,请执行以下操作:

File file = new File("path");



        InputStream caInput = new FileInputStream(file);
如果使用inputStram读取文件,请执行以下操作:

InputStream caInput = new BufferedInputStream(getAssets().open(
                            "ie_data.xlsx"));

            XSSFWorkbook workbook = new XSSFWorkbook(caInput);
            XSSFSheet feuille = workbook.getSheetAt(0);

            Cell cell = feuille.getRow(0).getCell(0);

            String value = cell.getStringCellValue() + "";

            System.out.print("hello = " + value); 
但是请注意,根据我的xslx文件,我得到了一个StringCellValue,您应该检查您的xlsx文件,看看它是一个字符串并使用getStringCellValue()还是一个数字并使用getNumericCellValue()

请给我一些反馈


希望能有所帮助。

我终于在平板电脑中找到了我的文件路径(以避免使用资产): “/storage/sdcard0/Documents/test42.xls”

应用程序已找到该文件,但在创建HSSF工作簿时仍然存在问题,出现异常“01”-
InputStream caInput = new BufferedInputStream(getAssets().open(
                            "ie_data.xlsx"));

            XSSFWorkbook workbook = new XSSFWorkbook(caInput);
            XSSFSheet feuille = workbook.getSheetAt(0);

            Cell cell = feuille.getRow(0).getCell(0);

            String value = cell.getStringCellValue() + "";

            System.out.print("hello = " + value); 
    try {
        File file = new File("/storage/sdcard0/Documents/test42.xls");
        FileInputStream input = new FileInputStream(file);





        HSSFWorkbook classeur =  new HSSFWorkbook(input);

        //HSSFSheet feuille = classeur.getSheetAt(0);

        //Cell cell = feuille.getRow(1).getCell(1);

        //String value = cell.getStringCellValue();


        String path = Environment.getExternalStorageDirectory().getAbsolutePath();

        TextView tv = new TextView(this);

        tv.setText(path );

        setContentView(tv);

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }