Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用ApachePOI库读取xls和xlsx?_Java_Android_Excel_Apache_Apache Poi - Fatal编程技术网

Java 如何使用ApachePOI库读取xls和xlsx?

Java 如何使用ApachePOI库读取xls和xlsx?,java,android,excel,apache,apache-poi,Java,Android,Excel,Apache,Apache Poi,我有一个从excel读取的应用程序。问题是我只能读取xlsx文件。我看不懂xls文件。这是我的代码: FileInputStream file = new FileInputStream(new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/"+nomeExcel)); HSSFWorkbook workbook = new

我有一个从excel读取的应用程序。问题是我只能读取xlsx文件。我看不懂xls文件。这是我的代码:

FileInputStream file = new FileInputStream(new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/"+nomeExcel));
                        HSSFWorkbook workbook = new HSSFWorkbook(file);
                        HSSFSheet sheet = workbook.getSheetAt(0);

                        int rowCtr = 34;
                        Row myRow = sheet.getRow(rowCtr++);
                        while (myRow != null) {
                            Cell nif = myRow.getCell(0);
                            Cell marcaexploracao = myRow.getCell(1);
                            Cell numerochip = myRow.getCell(2);
                            Cell marcaauricular = myRow.getCell(3);
                            Cell datanascimento = myRow.getCell(4);

                            bd.addAnimais(numerochip.toString().replace("\u00a0",""),marcaexploracao.toString().trim(),marcaauricular.toString(),datanascimento.toString(),nif.toString(),0,"","","","",0);
                            myRow = sheet.getRow(rowCtr++);
                        }

                    }catch (Exception e){e.printStackTrace(); }

                    Toast.makeText(getApplicationContext(),"Excel importado",Toast.LENGTH_SHORT).show();


                }
            });
您可以使用WorkbookFactory.create方法创建工作簿,如下所示:

InputStream inp = new FileInputStream(new FileInputStream("/path/to/file.xls"));
Workbook wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheetAt(0);

Apache POI有单独的包来读取XLSX,而不是HSSFWorkbook使用XSSFWorkbook等。此链接可能有用-XSSF可以读取这两个文件?我可以在新的FIleIputStream中使用StringValue吗?什么意思?复制代码时的第一个错误是:无法解析新FileInputStream中的构造函数。之后,我尝试使用stringValueOf并解决了这个问题。但是它给了我一个org.apache.poi.poifs.filesystem.NotOLE2FileException:当我阅读excel xls时,它只对xlsx excel文件有效。我需要xls和xlsx:/如果您没有具有此路径的文件,或者该文件可能为空,则可能会出现此异常。你能在调试模式下检查它吗?