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

TOM*_*LLO 13 java excel apache-poi

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

tom*_*tom 19

是的,POI提供了一组新的接口,可以同时使用这两种类型.

使用WorkbookFactory.create()方法获取工作簿: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));
}
Run Code Online (Sandbox Code Playgroud)


小智 17

我对Apache POI没有太多的exp,但据我所知,如果你按类"Workbook"引用工作簿,那么你可以读写xls和xlsx.

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

对于.xls-

Workbook wb = new HSSFWorkbook();
Run Code Online (Sandbox Code Playgroud)

对于.xlsx-

Workbook wb = new XSSFWorkbook();
Run Code Online (Sandbox Code Playgroud)

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


小智 10

你可以使用apache提供的poi-ooxml和poi-ooxml-schema jar来阅读.

并使用以下代码: -

Workbook wb = null;
excelFileToRead = new FileInputStream(fileName);
wb = WorkbookFactory.create(excelFileToRead); 
Sheet sheet = wb.getSheet(sheetName);
Run Code Online (Sandbox Code Playgroud)

上面的代码将读取xls和xlsx文件