为什么不从Excel中加载信息(* .xlsx)(使用Apache POI)?
尝试从Excel文件(* .xlsx)使用Apache POI 3.15加载JSP上的信息。
查看excel中的信息
num解决scheme
1首先
2秒
3三
尝试使用代码
try { InputStream ExcelFileToRead = new FileInputStream("C:\\server\\to_db.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) { out.print(cell.getStringCellValue() + " "); } else if (cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) { out.print(cell.getNumericCellValue() + " "); } else { //U Can Handel Boolean, Formula, Errors } } out.println("Succefully!!!"); } } catch (Exception e) { out.println( "exception: "+e); }
得到一个奇怪的结果:
没有错误,缺less关于JSP的信息….
问题在所有浏览器中都被重现。 如果我尝试打开C:\ server \ to_db.xlsx操作系统Windows响应“文件忙”。 可能是什么问题以及如何解决?
打开FileInputStream
或FileOutputStream
,需要将其closures,否则根据所使用的操作系统(尤其是Windows操作系统),进程可能会locking文件。 更一般的说,你需要close
所有你可以使用的Closeable
对象来防止任何泄漏或像这样的问题。
所以你应该把你的代码重写为next,以便使用try-with-resources
语句来自动closures资源。
try (InputStream ExcelFileToRead = new FileInputStream("C:\\server\\to_db.xlsx"); XSSFWorkbook wb = new XSSFWorkbook(ExcelFileToRead)) { ...
事实上,在你的代码中你有2个可Closeable
对象,它们是ExcelFileToRead
和wb
。
我想你必须使用“.close()”closures文件。 这可能会帮助你。
在lib目录中缺less一些公共库
commons-collections4-4.1.jar,commons-codec-1.10.jar,commons-fileupload-1.3.jar
他们的存在解决了问题
- 用java poiparsing一个公式是行不通的
- 如何使用Java在Excel电子表格中获取单元格的内容? Apache POI
- 将数据分割为多个表Apache POI
- 是否有可能使用java和Apache POI库逐行写入excel文件
- 使用POI在Excel中删除一行
- 在使用POI读取excel文件(xlsx)时发生java.lang.outofmemoryexception
- 在weblogic上使用Apache poi 3.13导出xlsx:文件格式或扩展名无效
- 我怎样才能总结与哈希映射中的一个重复密钥关联的值
- 如何在Java中使用apache poi将数据validation添加到Excel表单的整个列?