Apache的POI的Andr​​oidPOI、Apache、oid、Andr

2023-09-08 10:04:41 作者:抢我对象者不孕不育

我在一个Android应用程序中使用的Apache POI ,但我有一个问题在 HSSFWorkbook

我只是想读的Andr​​oid平板电脑的内部存储器中的Excel文件。 (要显示Android的应用程序数据)

我的code:

  @覆盖
保护无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);



尝试 {
    AssetManager assetManager = this.getAssets();
    的InputStream输入= assetManager.open(test42.XLS);

    HSSFWorkbook classeur =新HSSFWorkbook(输入);

    // HSSFSheet叶形= classeur.getSheetAt(0);

    //细胞细胞= feuille.getRow(1).getCell(1);

    //字符串值= cell.getStringCellValue();

    TextView的电视=新的TextView(本);


    tv.setText(测试);

    的setContentView(电视);

}赶上(IOException异常E){
    e.printStackTrace();
    的System.out.println(概率);

}

}
 

日志:

  01-28 14:09:55.036:E / dalvikvm(6919):找不到类的org.apache.xmlbeans.XmlOptions,从法org.apache.poi引用.POIXMLDocumentPart< clinit>

01-28 14:09:55.036:W / dalvikvm(6919):VFY:无法解析新的实例2751(Lorg /阿帕奇/的XMLBeans / XmlOptions;)在Lorg /阿帕奇/ POI / POIXMLDocumentPart;

01-28 14:09:55.036:D / dalvikvm(6919):VFY:更换运code输入0x22在×0008

01-28 14:09:55.056:E / AndroidRuntime(6919):致命异常:主要

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

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.invokeNative(本机方法)
 

新的日志猫:

  10月一号至29号:00:44.809:I / dalvikvm(7833):找不到方法org.apache.commons codec.digest.DigestUtils.md5,引用从方法org.apache.poi.hssf.usermodel.HSSFWorkbook.addPicture

10月1日至二十九号:00:44.809:W / dalvikvm(7833):VFY:无法解析静态方法6355:Lorg /阿帕奇/公/ codeC /消化/ DigestUtils; .md5([B)[B

10月1日至二十九号:00:44.809:D / dalvikvm(7833):VFY:更换运code 0x71在×0004

10月1日至二十九号:00:44.829:W / System.err的(7833):java.io.IOException异常:无效头签名;阅读0x0010000000060409,预计0xE11AB1A1E011CFD0

1月29日10:00:44.829:W / System.err的(7833):在org.apache.poi.poifs.storage.HeaderBlock&其中;初始化>(HeaderBlock.java:140)

1月29日10:00:44.829:W / System.err的(7833):在org.apache.poi.poifs.storage.HeaderBlock&其中;初始化>(HeaderBlock.java:104)

1月29日10:00:44.829:W / System.err的(7833):在

org.apache.poi.poifs.filesystem.POIFSFileSystem< INIT>(POIFSFileSystem.java:138)
1月29日10:00:44.829:W / System.err的(7833):在


org.apache.poi.hssf.usermodel.HSSFWorkbook< INIT>(HSSFWorkbook.java:322)
1月29日10:00:44.829:W / System.err的(7833):在

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

1月29日10:00:44.829:W / System.err的(7833):在com.example.test.MainActivity.onCreate(MainActivity.java:41)

1月29日10:00:44.829:W / System.err的(7833):在android.app.Activity.performCreate(Activity.java:5267)

1月29日10:00:44.829:W / System.err的(7833):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)


1月29日10:00:44.829:W / System.err的(7833):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)

1月29日10:00:44.829:W / System.err的(7833):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2295)

10月1日至二十九号:00:44.829:W / System.err的(7833):在android.app.ActivityThread.access $ 700(ActivityThread.java:150)


10月1日至二十九号:00:44.829:W / System.err的(7833):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1280)

1月29日10:00:44.829:W / System.err的(7833):在android.os.Handler.dispatchMessage(Handler.java:99)

1月29日10:00:44.829:W / System.err的(7833):在
android.os.Looper.loop(Looper.java:176)

1月29日10:00:44.829:W / System.err的(7833):在android.app.ActivityThread.main(ActivityThread.java:5279)

10月1日至二十九号:00:44.829:W / System.err的(7833):在java.lang.reflect.Method.invokeNative(本机方法)

1月29日10:00:44.829:W / System.err的(7833):在java.lang.reflect.Method.invoke(Method.java:511)


10月1日至二十九号:00:44.829:W / System.err的(7833):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1102)

1月29日10:00:44.829:W / System.err的(7833):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)

10月1日至二十九号:00:44.829:W / System.err的(7833):在dalvik.system.NativeStart.main(本机方法)


10月1日至二十九号:00:44.899:W /的ResourceType(7833):为0x01080a03(T = 7 E = 2563)的封装0失败越来越条目(错误-75)

10月1日至二十九号:00:44.999:D / libEGL(7833):加载/vendor/lib/egl/libEGL_POWERVR_SGX544_115.so

10月1日至二十九号:00:45.049:D / libEGL(7833):加载/vendor/lib/egl/libGLESv1_CM_POWERVR_SGX544_115.so

10月1日至二十九号:00:45.059:D / libEGL(7833):加载/vendor/lib/egl/libGLESv2_POWERVR_SGX544_115.so

10月1日至二十九号:00:45.129:D / OpenGLRenderer(7833):启用调试模式0
 

解决方案

尝试像以下的XLS文件的一些事情:

 尝试{
                InputStream的caInput =新的BufferedInputStream(getAssets()。打开(
                        ie_data.xls));
                HSSFWorkbook工作簿=新HSSFWorkbook(caInput);
                HSSFSheet叶形= workbook.getSheetAt(0);

                细胞细胞= feuille.getRow(1).getCell(1);

                字符串值= cell.getNumericCellValue()+;
                Toast.makeText(getApplicationContext(),价值,Toast.LENGTH_LONG)
                        。显示();
            }赶上(IOException异常E1){
                // TODO自动生成的catch块


e1.printStackTrace();
        }
 

和XLSX:

1日 - 导入follwoing jar文件:

(dom4j的-1.6.1.jar,POI,OOXML-3.5-FINAL.jar,POI,OOXML-模式-3.8-beta4.jar,POI-3.9-20121203.jar,XMLBeans的-2.3.0.jar)

2日 - 做一个try catch块内follwoing:

如果你用的是File对象做follwoing:

 文件文件=新的文件(路径);



        InputStream的caInput =新的FileInputStream(文件);
 

如果您正在使用inputStram读取文件执行以下操作:

 的InputStream caInput =新的BufferedInputStream(getAssets()。打开(
                            ie_data.xlsx));

            XSSFWorkbook工作簿=新XSSFWorkbook(caInput);
            XSSFSheet叶形= workbook.getSheetAt(0);

            细胞细胞= feuille.getRow(0).getCell(0);

            字符串值= cell.getStringCellValue()+;

            System.out.print(你好=+值);
 

但请注意我收到根据我XSLX文件StringCellValue,你应该检查你的xlsx文件,看看它是一个字符串,并使用getStringCellValue()或数字和使用getNumericCellValue()。

请给我一些反馈

希望有所帮助。

I am using Apache Poi in an Android application, but I have a problem with the HSSFWorkbook.

I just want to read an Excel file found in the internal memory of the Android tablet. (To display data in Android application)

my code:

@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");

}

}

The log :

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)

the new log cat :

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

解决方案

try some thing like the following for the xls files :

   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();
        }

and for xlsx :

1st - import the follwoing jar files :

(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).

2nd - do the follwoing inside a try catch block :

if you are using a File object do the follwoing :

File file = new File("path");



        InputStream caInput = new FileInputStream(file);

if you are reading the file using inputStram do the following :

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); 

but please notice i am getting a StringCellValue according to my xslx file , you should check your xlsx file and see if its a string and use getStringCellValue() or a Numeric and use getNumericCellValue() .

please give me some feedback

Hope that helps .