【问题标题】:How to resolve the java.lang.VerifyError: org/apache/poi/xssf/usermodel/XSSFWorkbook?如何解决 java.lang.VerifyError: org/apache/poi/xssf/usermodel/XSSFWorkbook?
【发布时间】:2015-07-28 02:55:33
【问题描述】:

我正在尝试从资产文件夹中读取 xlsx 文件。我收到以下异常,

05-16 10:12:05.613:E/AndroidRuntime(2915):致命异常:主要 05-16 10:12:05.613: E/AndroidRuntime(2915): java.lang.VerifyError: org/apache/poi/xssf/usermodel/XSSFWorkbook

在此异常之前,我还收到了一些警告,例如,

  • 找不到方法 org.openxmlformats.schemas.spreadsheetml.x2006.main.WorkbookDocument$Factory.parse, 从方法引用 org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead

  • VFY:无法解析异常类 3612 (Lorg/apache/xmlbeans/XmlException;)

我在我的应用程序中添加了 poi 3.12 库,库截图如下,

我在Order and Export中检查了poi-3.12和poi-ooxml-3.12 jar文件,截图如下,

我使用下面的代码,

        InputStream is = context.getAssets().open("sample.xlsx"));
        XSSFWorkbook workbook = new XSSFWorkbook(is);
        XSSFSheet sheet = workbook.getSheetAt(0);
        Cell cell = sheet.getRow(0).getCell(0);
        String value = cell.getStringCellValue() + "";

我想读写 .XLSX 和 .XLS 文件。如何解决这个问题?

提前致谢。

【问题讨论】:

  • 您是否可以选择检查 android 的可部署项?只是为了检查所需的罐子在那里?
  • @OlimpiuPOP Android 开发没有单独的 jar 文件。
  • 转到您的 bin 文件并删除那里的文件,重新添加到构建路径 clean 并重新构建。也许它可能会有所帮助
  • 错误发生在哪里?手机还是模拟器?还是两者兼而有之?
  • @OlimpiuPOP 模拟器和手机。

标签: java android excel apache-poi xssf


【解决方案1】:

首先,您应该将这些 jar 连接到您的项目。

然后使用此代码进行阅读

public static void readXLSXFile() throws IOException
    {
        InputStream ExcelFileToRead = new FileInputStream("C:/Test.xlsx");
        XSSFWorkbook  wb = new XSSFWorkbook(ExcelFileToRead);

        XSSFWorkbook test = new XSSFWorkbook(); 

        XSSFSheet sheet = wb.getSheetAt(0);
        XSSFRow row; 
        XSSFCell cell;

        Iterator rows = sheet.rowIterator();

        while (rows.hasNext())
        {
            row=(XSSFRow) rows.next();
            Iterator cells = row.cellIterator();
            while (cells.hasNext())
            {
                cell=(XSSFCell) cells.next();

                if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING)
                {
                    System.out.print(cell.getStringCellValue()+" ");
                }
                else if(cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC)
                {
                    System.out.print(cell.getNumericCellValue()+" ");
                }
                else
                {
                    //U Can Handel Boolean, Formula, Errors
                }
            }
            System.out.println();
        }

    }

【讨论】:

  • 我已经在项目构建库中添加了这些 jar 文件。
  • 你能说说你的想法吗?
  • 我正在使用 Eclipse IDE。
  • 所以,尝试删除所有库,然后只连接这 4 个 jar。也许你有一些重复。
  • 如果不行,下载这2个jar包,试试看。 github.com/andruhon/AndroidReadXLSX/tree/master/libs
【解决方案2】:

更新了您的代码,使其能够读取和写入 .XLSX 和 .XLS 文件

InputStream is = context.getAssets().open("sample.xlsx"));
Workbook workbook = WorkbookFactory.create(is);
Sheet sheet = workbook.getSheetAt(0);
Cell cell = sheet.getRow(0).getCell(0);
String value = cell.getStringCellValue() + "";

对于您的图书馆,请看这里android getting java lang verify error when using external java lib

【讨论】:

    猜你喜欢
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2019-05-27
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    相关资源
    最近更新 更多