有没有办法使用Apache POI读取.xls和.xlsx文件?

2022-09-03 08:32:33

我需要创建一个可以读取xls和xlsx文件的方法。根据我的研究,HSSF用于读取xls,XSSF用于读取xlsx。是否有Apache POI的一部分可以用来读取这两个文件?我也遇到了ss.usermodel,但没有发现足够的代码可以同时娱乐xls和xlsx....


答案 1

是的,POI 提供了一组新的接口,可用于这两种类型。

使用 WorkbookFactory.create() 方法获取 Workbook:http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/WorkbookFactory.html

您可以使用以下命令检查Excel文件而不依赖于文件扩展名(例如,这些文件扩展名不可靠 - 例如,许多csv文件具有xls扩展名,但无法通过POI解析):

//simple way to check for both types of excel files
public boolean isExcel(InputStream i) throws IOException{
    return (POIFSFileSystem.hasPOIFSHeader(i) || POIXMLDocument.hasOOXMLHeader(i));
}

答案 2

我对Apache POI没有太多的exp,但据我所知,如果你通过类“Workbook”引用工作簿,那么你可以读取和编写xls和xlsx。

您所要做的就是在创建对象写入时

对于.xls-

Workbook wb = new HSSFWorkbook();

对于.xlsx-

Workbook wb = new XSSFWorkbook();

您可以传递文件类型的参数,并使用 If 语句相应地创建 WorkBook 对象。


推荐