`
linhao315
  • 浏览: 29292 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用POI 3.8编写可以同时解析excel2003/2007的代码

阅读更多
    目前最新的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

    在"poi3.8 源代码 解析Excel"这个主题中,我们主要关注的是如何使用POI库来解析和操作Excel文件。POI 3.8 是一个较早的版本,但它仍然具有广泛的兼容性和实用性,尤其是对于解析Excel 2007(.xlsx)这样的新格式。 ...

    poi3.8+poi-pdf+poi-core.rar

    标题中的"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)事件的解析

    "POI3.8组件研究(七)--基于XSSF and SAX (Event API)事件的解析" 提到了Apache POI库的一个高级话题,主要关注的是如何使用XSSF(XML Spreadsheet Formatting Streams)和SAX(Simple API for XML)的Event API来...

    POI.rar_2007_POI_poi excel2003 2007

    综合以上,使用这个压缩包,开发者可以学习如何在Java环境中使用Apache POI库读取和操作Excel 2007的XLSX文件,同时也有示例代码和必要的依赖库作为参考。首先,需要将这些库添加到项目的类路径中,然后通过Apache ...

    poi解析excel的poi包

    在这个场景中,我们将重点讨论如何使用Apache POI(即"poi包")解析Excel文件并将数据存入Oracle数据库。 首先,你需要在项目中引入Apache POI的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ``...

    大数据Excel操作不会内存溢出POI

    同时支持Excel-2003和Excel-2007,excel-2003解析采用poi的eventusermodel模式实现,2007采用xmlreader实现,经项目验证,excel文件20W条数据没有任何问题,仅读取的话2-3分钟解析完毕。 网络上有关eventusermodel...

    使用poi操作Excel2007工具类及示例(包括完整Jar包)

    对于Excel 2007及以上版本,POI使用OOXML(Open XML)标准来解析和生成.xlsx文件。 2. **包含的库文件** - `poi-3.8-20120326.jar`: 这是Apache POI的核心库,提供了读写Excel文件的基本功能。 - `poi-ooxml-3.8-...

    java 解析excel jar包

    总之,Java通过Apache POI库可以有效地解析Excel 2003和2007文件,这在数据处理和分析中是非常实用的工具。在使用过程中,理解各个库的作用以及合理运用API,能够帮助我们编写出高效、可靠的代码。

    Java使用poi操作excel实例解析

    标题:“Java使用poi操作excel实例解析” 描述:“主要为大家详细介绍了Java使用poi操作excel的简单实例,感兴趣的小伙伴们可以参考一下” 标签:“Java poi excel” 知识点: 1. POI概念介绍:Apache POI是一个...

    poi导入导出Excel表格的所以jar包

    在实际开发中,通常会将这些jar包加入到项目的类路径中,然后通过编写Java代码来调用Apache POI提供的API,实现对Excel文件的读写操作。这极大地简化了Java应用程序与Excel交互的工作,使得在没有Microsoft Office的...

    POI操作Excel

    导入这些库后,我们就可以开始编写读取 Excel 文件的代码了。在提供的代码段中,`poiReadExcel` 方法展示了如何读取一个 Excel 文件并打印每行每列的数据。下面是对这段代码的详细解读: ```java public static ...

    jxls1.0.1最新版及所有依赖jar包

    通过使用jxls,开发者可以使用Java模板语言(如JEXL)来动态地生成复杂的Excel报告,而无需编写大量的低级代码。 首先,jxls-core-1.0.1.jar是jxls的核心库,包含了主要的功能和API。这个库提供了将Java集合或POJOs...

    Java通过反射将 Excel 解析成对象集合实例

    4. 工具类编写:在编写工具类时,需要使用 Java 反射机制将 Excel 文件中的数据解析成对象集合实例。 5. 反射机制在 Java 中的应用:反射机制在 Java 中有广泛的应用,例如将 Excel 文件中的数据解析成对象集合实例...

    wordToPdf.zip

    这些库共同工作,使得开发者能够通过Java编写代码,实现从.doc或.docx文档转换成PDF的过程。转换过程中可能涉及读取Word文档的内容,解析其结构,然后使用iText将内容和格式化信息写入PDF文件。整个过程涉及到的编程...

Global site tag (gtag.js) - Google Analytics