我需要创建一个可以读取XLS和XLSX文件的方法。根据我的研究,HSSF用于读取xls和XSSF来读取xlsx。是否有可用于读取这两个文件的Apache POI的一部分?我也遇到了ss.usermodel,但没有发现足够的代码,可以同时支持xls和xlsx ......有什么方法可以使用Apache POI来读取.xls和.xlsx文件?
回答
我还没有用Apache POI进行太多的实验,但据我所知如果你提到一个工作簿按类“工作簿”,那么你可以读写xls & xlsx。
所有你需要做的就是为.xls-
Workbook wb = new HSSFWorkbook();
当创建对象的写
为.xlsx-
Workbook wb = new XSSFWorkbook();
你可以传递参数的文件类型和创建WorkBook对象相应地使用If语句。
你好!我也记住了上述代码,如果找不到其他方式来检测文件扩展名,我打算使用这些代码。 –
我建议你检查这个基本工具来阅读所有的excel文件:https://github.com/eaorak/excelr – noego
一个选择是与lastIndexOf检查文件名。并查看它是.xls还是xlsx,然后使用if条件进行相应切换。 已经很长时间了,因为我工作在poi但我认为它的属性就像HSSF .xls和XSSF为.xlsx 参考http://poi.apache.org/网站,最后一行在主题 为什么要使用Apache POI?
谢谢你的答案!我会尽量考虑你的回答 –
看样子你正在寻找一种方式来抽象的读取过程,你说如果XLS或XLSX,你希望你的代码,而无需修改也没有关系。
我建议你看看Apache Tika,它是一个抽象文件阅读和内容解析的优秀库,它使用POI和许多其他库,并且对它们都有很好的抽象。
阅读PDF/XLS/XLSX类似于读取文本文件,所有的工作都是在幕后进行。
阅读更多。 http://www.searchworkings.org/blog/-/blogs/introduction-to-apache-tika
非常感谢你提供Apache Tika的建议,这是我第一次读到这个。我会研究这一点,并将其与Apache POI –
进行比较。Tika使用POI和许多其他库,它是对所有这些库的抽象,而不是替代品。 –
是的,有一组新的,与这两种类型的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));
}
你好!感谢您发布的代码。我发现它比我尝试过的冗长代码更好。 –
.doc将通过这个检查 – gstackoverflow
感谢汤姆的答案只是添加,使用foll。代码来获得的InputStream否则,我们可能会面临Exception in thread "main" java.io.IOException: mark/reset not supported
InputStream inputStream = new FileInputStream(new File("C:\\myFile.xls"));
if(! inputStream.markSupported()) {
inputStream = new PushbackInputStream(fileStream, 8);
}
不错的一个。接得好! – tom
你可以阅读使用的Apache POI提供,OOXML和POI-OOXML-模式罐子。
,并使用下面的代码: -
Workbook wb = null;
excelFileToRead = new FileInputStream(fileName);
wb = WorkbookFactory.create(excelFileToRead);
Sheet sheet = wb.getSheet(sheetName);
上面的代码将同时读取XLS和XLSX文件
您可以使用
Workbook wb = WorkBookFactory().create(inputStream);
使用'File'通常更好,请参阅http://poi.apache.org/spreadsheet/quick-guide.html#FileInputStream – Gagravarr
- 1. Apache POI - 使用usermodel读取.xlsx和.xls文件
- 2. 使用Java和Apache poi阅读.xls或.xlsx文件的内容
- 3. Apache poi XLSX到XLS
- 4. 用Apache POI打开xls和xlsx
- 5. 使用apache poi无法读取xlsx文件
- 6. HH:MM:SS xls使用Apache POI读取
- 7. 使用javascript读取xls或xlsx文件
- 8. 如何使用apache POI下载xls或xlsx文件
- 9. 使用POI读取xlsx文件(SXSSFWorkbook)
- 10. 如何通过Apache POI 3.9从xls/xlsx读取时间格式?
- 11. 使用Apache Poi在内部存储中读取excel xlsx文件
- 12. 使用java读取Excel文件.xlsx Apache POI 3.9 Eclipse
- 13. 从xls和xlsx excel文件读取和写入文件
- 14. 什么是apache poi方法从xlsx文件中获取表单xml?
- 15. 使用poi API来读取XLSX文件不起作用
- 16. 如何使用POI读取.xsl和.xlsx?
- 17. 如何使用POI库来读取大型Excel文件(.xlsx)?
- 18. 如何使用C#和OleDbConnection读取.xlsx和.xls文件?
- 19. Apache Poi更新xls文件
- 20. xlsx通过apache poi阅读
- 21. Apache POI xlsx读取错误“限制超过65536个dex文件的方法”Android
- 22. 在java中使用apache poi阅读xlsx文件?不工作
- 23. 通过Apache POI读取大型Excel文件(xlsx)时出错
- 24. 入门的Apache POI java.lang.IllegalStateException:Zip文件试图读取xlsx档案
- 25. Apache POI读取xlsx文件而不更改格式
- 26. 使用POI从.xlsx文件读取数据时,可以如何使用Selenium webdriver屏幕截图捕获方法?
- 27. 使用Apache poi将csv转换为xls/xlsx?
- 28. 使用POI从.xls升级到.xlsx
- 29. 如何用apache poi XSSF获取xlsx文件的文件名?
- 30. 如何使用Apache POI读取xlsx文件中的记录数量?
WorkbookFactory.create()必须接受回答。 http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/WorkbookFactory.html –