gpt4 book ai didi

java - header 签名无效

转载 作者:行者123 更新时间:2023-11-29 07:46:14 25 4
gpt4 key购买 nike

我想从 .xlsx 文件中提取数据,为此我已经添加了 poi jar 并创建了 fileInputStream 的引用

package demo;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;


import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class DemoExcel {

public static void main(String[] args) throws Exception{
File excel = new File("C:\\Users\\Devaditya\\Documents\\Book1.xlsx");
FileInputStream fis = null;
fis = new FileInputStream(excel);
System.out.println(fis.toString());
HSSFWorkbook wb = new HSSFWorkbook(fis);
System.out.println(wb.toString());
HSSFSheet sh = wb.getSheet("Data");
System.out.println(sh.toString());
}

}

这里我得到了错误:-

Exception in thread "main" java.io.IOException: Invalid header signature; read 0, expected -2226271756974174256
at org.apache.poi.poifs.storage.HeaderBlockReader.<init>(HeaderBlockReader.java:88)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:83)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:210)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:191)
at demo.DemoExcel.main(DemoExcel.java:23)

最佳答案

让我们从 WorkBook 的类型开始.

HSSFWorkbook

这是旧的二进制专有 Excel 格式,扩展名为 .xls

XSSFWorkbook

这是新的 XML Excel 格式,扩展名为 .xlsx

所以,您使用了错误的类。

事实上,最好不要使用特定的类,让 POI 计算出你有什么。使用WorkbookFactory :

final Workbook workbook = WorkbookFactory.create(excel);

这是:

  1. > programming to the interface .
  2. 对阅读的工作簿类型的变化具有鲁棒性,只要 POI 支持它
  3. 更快、更高效。 POI 可以在需要时零碎地读取文件,而不必将整个工作簿塞进内存。
  4. 没有close() FileInputStream 时出现的内存泄漏问题。

关于java - header 签名无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25448165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com