【问题标题】:Need help for apache poi reading xls with XSSF需要帮助 apache poi 使​​用 XSSF 读取 xls
【发布时间】:2019-09-04 20:55:21
【问题描述】:

我需要使用 apache XSSF 读取 xls 文件的帮助。

XSSF 的实现对于“xlsx”运行良好。不适用于“xls”文件。

代码如下:

    XSSFWorkbook workBook = new XSSFWorkbook("fileName");
    XSSFSheet sheet = workBook.getSheetAt(0);
    XSSFRow row = sheet.getRow(0);

感谢任何解决方法。

【问题讨论】:

  • 您是否尝试阅读Apache POI QuickGuide?它向您展示了如何使用基本相同的代码读写 XSSF 和 HSSF 文件
  • 感谢您的重播。是的,我可以分别为 .xml HSSF 和 .xlsx XSSF 做。但是有什么方法可以通过单一实现来实现这两者?

标签: java apache-poi


【解决方案1】:

您应该使用 HSSF (.xls) 和 XSSF (.xlsx) 之间通用的接口,而不是直接使用 XSSF 类。您问题中的代码 sn-p 将变为:

 Workbook wb = WorkbookFactory.create(file); // Or InputStream
 Sheet sheet = workBook.getSheetAt(0);
 Row row = sheet.getRow(0);
 Cell cell = row.getCell(0);
 System.out.println("Cell A1 is of type " + cell.getCellType());

有关更多信息和示例,请参阅Apache POI QuickGuide

【讨论】:

  • 这似乎不适用于 xlsx。每当我尝试上传该格式的 excel 文件时,都会收到一个奇怪的反射错误:java.lang.reflect.InvocationTargetException。我将从excel文件中获得的行存储在一个向量中,然后将该向量传递给另一个函数。当我在该函数中时,对于 XLSX 文件,该向量始终为空,但对于 XLS 文件,它具有正确的值。
  • 另外,该链接不会演示 xssf。只有 hssf。
  • 确实如此 - 那里的代码对 HSSF 和 XSSF 的工作方式相同,只是取决于您在顶部输入的工作簿类型。如果您遇到问题,请提出一个新问题并发布完整的堆栈跟踪#
【解决方案2】:

试试这个...

FileInputStream is = new FileInputStream(filePath))
XSSFWorkbook workbook = new XSSFWorkbook(is);
is.close();

下面的这个链接似乎可以解决这个问题......祝你好运。

http://apache-poi.1045710.n5.nabble.com/InvalidOperationException-Can-t-open-specified-file-td5524067.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    相关资源
    最近更新 更多