目前最新的poi-3.8-20120326.jar已经可以同时支持office 2003和office 2007的文档处理,最近用它处理过xls和xlsx两种格式的文件,做个笔记。
据我了解,POI用于处理xls的API都是HSSF开头的,比如HSSFWorkbook和HSSFSheet;而用于处理xlsx的API是XSSF开头的,比如XSSFWorkbook。
如果只有这两种的话,要同时支持xls和xlsx两种格式,就要写两份代码,何其麻烦。
幸好还有第三种选择,那就是没有上述两种前缀的API,比如Workbook和Sheet等,都在org.apache.poi.ss.usermodel包下面。没有前缀,显然意味着这是一种通用的excel处理API了。
使用起来也很简单:
if (fileName.endsWith(".xlsx") || fileName.endsWith(".xls")){
FileInputStream inputStream = new FileInputStream(file);
Workbook workbook = WorkbookFactory.create(inputStream);
analyzeWorkbook(workbook);
}
下面是analyzeWorkbook的部分代码:
Sheet sheet = workbook.getSheetAt(0);//第一个表单
Row excelRow = null;
Map<String,Object> row = null;
int rowCount = sheet.getLastRowNum();
//循环处理每个格子
for (int j = 0 ; j <= rowCount ; j++){
excelRow = sheet.getRow(j);
if (excelRow != null){
row = new HashMap<String,Object>();
for (int i = 0 ; i < colModel.size() ; i++){
Cell cell = excelRow.getCell(i);
if (cell == null ){
row.put(colModel.get(i).toString(), "");
}
else {
row.put(colModel.get(i).toString(), getCellValue(cell));
}
}
rows.add(row);
}
}
getCellValue的:
private Object getCellValue(Cell cell){
int cellType = cell.getCellType();
switch (cellType) {
case Cell.CELL_TYPE_STRING:
return cell.getStringCellValue();
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
Date date = cell.getDateCellValue();
return DateUtil.toString(date, "yyyy-MM-dd");
}
else {
return cell.getNumericCellValue();
}
case Cell.CELL_TYPE_BOOLEAN:
return cell.getBooleanCellValue();
case Cell.CELL_TYPE_FORMULA:
case Cell.CELL_TYPE_BLANK:
case Cell.CELL_TYPE_ERROR:
default: return cell.getStringCellValue();
}
}
分享到:
相关推荐
在"poi3.8 源代码 解析Excel"这个主题中,我们主要关注的是如何使用POI库来解析和操作Excel文件。POI 3.8 是一个较早的版本,但它仍然具有广泛的兼容性和实用性,尤其是对于解析Excel 2007(.xlsx)这样的新格式。 ...
标题中的"poi3.8+poi-pdf+poi-core.rar"提到了三个主要部分:POI 3.8 版本、poi-pdf 1.0 和 poi-core 1.0。 1. **POI 3.8**: 这是Apache POI的一个稳定版本,发布于2012年3月26日。它包含多个子模块,如: - **poi...
"POI3.8组件研究(七)--基于XSSF and SAX (Event API)事件的解析" 提到了Apache POI库的一个高级话题,主要关注的是如何使用XSSF(XML Spreadsheet Formatting Streams)和SAX(Simple API for XML)的Event API来...
综合以上,使用这个压缩包,开发者可以学习如何在Java环境中使用Apache POI库读取和操作Excel 2007的XLSX文件,同时也有示例代码和必要的依赖库作为参考。首先,需要将这些库添加到项目的类路径中,然后通过Apache ...
在这个场景中,我们将重点讨论如何使用Apache POI(即"poi包")解析Excel文件并将数据存入Oracle数据库。 首先,你需要在项目中引入Apache POI的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ``...
同时支持Excel-2003和Excel-2007,excel-2003解析采用poi的eventusermodel模式实现,2007采用xmlreader实现,经项目验证,excel文件20W条数据没有任何问题,仅读取的话2-3分钟解析完毕。 网络上有关eventusermodel...
总之,Java通过Apache POI库可以有效地解析Excel 2003和2007文件,这在数据处理和分析中是非常实用的工具。在使用过程中,理解各个库的作用以及合理运用API,能够帮助我们编写出高效、可靠的代码。
对于Excel 2007及以上版本,POI使用OOXML(Open XML)标准来解析和生成.xlsx文件。 2. **包含的库文件** - `poi-3.8-20120326.jar`: 这是Apache POI的核心库,提供了读写Excel文件的基本功能。 - `poi-ooxml-3.8-...
标题:“Java使用poi操作excel实例解析” 描述:“主要为大家详细介绍了Java使用poi操作excel的简单实例,感兴趣的小伙伴们可以参考一下” 标签:“Java poi excel” 知识点: 1. POI概念介绍:Apache POI是一个...
在实际开发中,通常会将这些jar包加入到项目的类路径中,然后通过编写Java代码来调用Apache POI提供的API,实现对Excel文件的读写操作。这极大地简化了Java应用程序与Excel交互的工作,使得在没有Microsoft Office的...
导入这些库后,我们就可以开始编写读取 Excel 文件的代码了。在提供的代码段中,`poiReadExcel` 方法展示了如何读取一个 Excel 文件并打印每行每列的数据。下面是对这段代码的详细解读: ```java public static ...
通过使用jxls,开发者可以使用Java模板语言(如JEXL)来动态地生成复杂的Excel报告,而无需编写大量的低级代码。 首先,jxls-core-1.0.1.jar是jxls的核心库,包含了主要的功能和API。这个库提供了将Java集合或POJOs...
4. 工具类编写:在编写工具类时,需要使用 Java 反射机制将 Excel 文件中的数据解析成对象集合实例。 5. 反射机制在 Java 中的应用:反射机制在 Java 中有广泛的应用,例如将 Excel 文件中的数据解析成对象集合实例...
这些库共同工作,使得开发者能够通过Java编写代码,实现从.doc或.docx文档转换成PDF的过程。转换过程中可能涉及读取Word文档的内容,解析其结构,然后使用iText将内容和格式化信息写入PDF文件。整个过程涉及到的编程...