Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能。
结构:
HSSF - 提供读写Microsoft Excel格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
HWPF - 提供读写Microsoft Word格式档案的功能。
HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读写Microsoft Visio格式档案的功能。
以下是实例程序:
package excelread; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** * 操作Excel表格的功能类 * @author:hnylj * @version 1.0 */ public class ExcelReader { private POIFSFileSystem fs; private HSSFWorkbook wb; private HSSFSheet sheet; private HSSFRow row; /** * 读取Excel表格表头的内容 * @param InputStream * @return String 表头内容的数组 * */ public String[] readExcelTitle(InputStream is) { try { fs = new POIFSFileSystem(is); wb = new HSSFWorkbook(fs); } catch (IOException e) { e.printStackTrace(); } sheet = wb.getSheetAt(0); row = sheet.getRow(0); //标题总列数 int colNum = row.getPhysicalNumberOfCells(); String[] title = new String[colNum]; for (int i=0; i<colNum; i++) { title[i] = getStringCellValue(row.getCell((short) i)); } return title; } /** * 读取Excel数据内容 * @param InputStream * @return Map 包含单元格数据内容的Map对象 */ public Map<Integer,String> readExcelContent(InputStream is) { Map<Integer,String> content = new HashMap<Integer,String>(); String str = ""; try { fs = new POIFSFileSystem(is); wb = new HSSFWorkbook(fs); } catch (IOException e) { e.printStackTrace(); } sheet = wb.getSheetAt(0); //得到总行数 int rowNum = sheet.getLastRowNum(); row = sheet.getRow(0); int colNum = row.getPhysicalNumberOfCells(); //正文内容应该从第二行开始,第一行为表头的标题 for (int i = 1; i <= rowNum; i++) { row = sheet.getRow(i); int j = 0; while (j<colNum) { //每个单元格的数据内容用"-"分割开,以后需要时用String类的replace()方法还原数据 //也可以将每个单元格的数据设置到一个javabean的属性中,此时需要新建一个javabean str += getStringCellValue(row.getCell((short) j)).trim() + "-"; j ++; } content.put(i, str); str = ""; } return content; } /** * 获取单元格数据内容为字符串类型的数据 * @param cell Excel单元格 * @return String 单元格数据内容 */ private String getStringCellValue(HSSFCell cell) { String strCell = ""; switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_STRING: strCell = cell.getStringCellValue(); break; case HSSFCell.CELL_TYPE_NUMERIC: strCell = String.valueOf(cell.getNumericCellValue()); break; case HSSFCell.CELL_TYPE_BOOLEAN: strCell = String.valueOf(cell.getBooleanCellValue()); break; case HSSFCell.CELL_TYPE_BLANK: strCell = ""; break; default: strCell = ""; break; } if (strCell.equals("") || strCell == null) { return ""; } if (cell == null) { return ""; } return strCell; } /** * 获取单元格数据内容为日期类型的数据 * @param cell Excel单元格 * @return String 单元格数据内容 */ private String getDateCellValue(HSSFCell cell) { String result = ""; try { int cellType = cell.getCellType(); if (cellType == HSSFCell.CELL_TYPE_NUMERIC) { Date date = cell.getDateCellValue(); result = (date.getYear() + 1900) + "-" + (date.getMonth() + 1) + "-" + date.getDate(); } else if (cellType == HSSFCell.CELL_TYPE_STRING) { String date = getStringCellValue(cell); result = date.replaceAll("[年月]", "-").replace("日", "").trim(); } else if (cellType == HSSFCell.CELL_TYPE_BLANK) { result = ""; } } catch (Exception e) { System.out.println("日期格式不正确!"); e.printStackTrace(); } return result; } public static void main(String[] args) { try { //对读取Excel表格标题测试 InputStream is = new FileInputStream("C:\\Excel表格测试.xls"); ExcelReader excelReader = new ExcelReader(); String[] title = excelReader.readExcelTitle(is); System.out.println("获得Excel表格的标题:"); for (String s : title) { System.out.print(s + " "); } //对读取Excel表格内容测试 InputStream is2 = new FileInputStream("C:\\Excel表格测试.xls"); Map<Integer,String> map = excelReader.readExcelContent(is2); System.out.println("获得Excel表格的内容:"); for (int i=1; i<=map.size(); i++) { System.out.println(map.get(i)); } } catch (FileNotFoundException e) { System.out.println("未找到指定路径的文件!"); e.printStackTrace(); } } }
发表评论
-
【转】多线程
2012-04-05 16:49 910多线程线程:是指进程中的一个执行流程。线程与进程的区别:每个进 ... -
算法导论学习笔记四---快速排序及随机化算法
2012-02-04 11:27 6180算法特点: 1.分治法设计 2.节省内存 3.非常实用 ... -
算法导论学习笔记三之分治法与递归式解法
2012-02-02 10:53 3252分治法概念: 分治法:将原问题分成n个规模较小而结构与原问题 ... -
java与osgi入门篇
2012-02-01 00:20 2139今天同学问起来OSGI的问题,我之前没接触过,所以搜索了一下, ... -
算法学习笔记二---如何进行算法分析&渐近符号介绍
2012-01-10 22:28 5583一、如何进行算法分析 算法分析指对一个算法需要的资源进 ... -
算法导论学习笔记一
2012-01-07 17:29 2469算法简介: 算法分析是关于计算机性能和资源 ... -
有效和正确定义hashCode()和equals()
2011-12-19 16:31 1812hashCode方法的作用: 总 ... -
DIV+CSS 滑动门技术的简单例子
2010-01-28 09:43 201<!DOCTYPE html PUBLIC " ... -
经常要用的JavaScript字符串处理函数
2009-12-23 09:38 967函数:split() 功能:使用一个指定的分隔符把一个字符串 ... -
java日期处理
2009-11-30 14:38 1017package com; import java.text. ... -
file转String
2009-11-03 14:56 2395public static String loadAFileT ... -
java读取xml
2009-11-03 14:52 1030package webcontroller.dbsx; ... -
ejb3.0初体验,部署真麻烦~~~~
2009-05-24 19:28 185本人用的EJB容器是JBOSS,首先JBOSS的安装也有讲究。 ... -
MyEclipse 6.5 注册码
2008-12-06 15:01 2029import java.io.BufferedReade ...
相关推荐
首先,我们需要引入两个关键库:Apache POI用于读取Excel文件,而Swing则是Java GUI的主要组件库。Apache POI是一个开源项目,它提供了API来操作Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。 1. **安装...
在Java编程中,读取...以上就是使用Java读取Excel文件生成矩阵的基本步骤。实际开发中,你可能还需要处理更多细节,如异常处理、数据验证、优化性能等。希望这个介绍能帮助你理解这个过程,并在实际项目中灵活应用。
Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 ...在本文中,我们已经详细介绍了如何使用 Java POI 实现 Excel 导入导出功能,包括读取和写入 Excel 文件。
3. **数据读写**:Apache POI允许开发者逐行或逐单元格地读取Excel数据,也可以一次性读取整个工作簿。写入数据时,可以创建新的工作表、添加行和单元格、设置数据格式等。 4. **样式与格式**:POI支持设置单元格的...
本文将深入探讨如何使用POI库通过Java读取Excel数据,并介绍相关的jar文件。 首先,我们需要了解POI的三个主要组件: 1. poi-3.0.2-FINAL-20080204.jar:这是核心库,包含了处理Excel(HSSF)和Word(HWPF)文档的...
本文将深入探讨如何使用POI组件来处理Excel和Word文档,以及如何通过模板动态生成Excel表格。 一、Apache POI简介 Apache POI 是一个开源项目,它的主要功能是读取和写入Microsoft Office格式的文件,如.XLS(Excel...
Java的Apache POI组件是用于处理Microsoft Office格式文件的一个强大工具,特别在数据导入和导出方面表现出色。POI项目始于2001年,旨在提供一个纯Java的解决方案来读取、写入和修改Microsoft Office文档,包括Excel...
- **Apache POI库**:为了读取Excel数据,我们需要一个库,如Apache POI。它是Java中用于处理Microsoft Office文档的库,包括Excel。首先,在你的build.gradle文件中添加POI依赖。 ```groovy dependencies { ...
在Java编程中,读取Excel文件并将其导出为HTML表格是一项常见的任务,尤其是在数据处理和Web应用开发中。这个任务通常涉及到使用第三方库来处理Excel文件,因为Java标准库并不直接支持Excel格式。本篇将详细介绍如何...
在标题提到的"poi3.1"版本中,该库已经相当成熟,为开发人员提供了丰富的功能来创建、修改和读取Excel文件。在本文中,我们将深入探讨Apache POI 3.1的核心概念、使用场景以及如何通过它在Java应用程序中操作Excel。...
本示例将深入探讨如何在C#中不依赖Microsoft Office组件来读取Excel表格数据,这通常通过使用第三方库或者.NET Framework提供的System.Data.OleDb组件实现。 首先,我们介绍最常用的方法之一,即使用`System.Data....
本文将详细介绍如何使用Apache POI库来读取Excel 2007及以上版本(即XLSX格式)的文件,并提供所需的jar包信息。 首先,要使用Apache POI读取XLSX文件,你需要确保引入了正确的依赖。Apache POI项目提供了多个组件...
本文将深入探讨如何使用POI组件来处理Excel文档,包括创建、填充数据、读取信息以及在实际应用中的使用场景。 1. **POI组件介绍** Apache POI是一个开源项目,最初由Glen Stampoultzis创建,后来成为Apache软件...
读取Excel文件使用HSSF的usermodel API非常直观。首先,你需要创建一个`InputStream`,然后实例化`HSSFWorkbook`: ```java InputStream myxls = new FileInputStream("workbook.xls"); HSSFWorkbook wb = new ...
标题中的“poi包 EXCEL模板读取填数据并导出以及在模板某行插入新的行”涉及到了Apache POI库的使用,这是一个Java API,专门用于处理Microsoft Office格式的文件,如Excel。以下是对这个主题的详细解释: Apache ...
Java POI 是一个开源库,...因此,为了确保Java POI能够顺利读取Excel文件,开发者必须确保项目配置中包含了上述所有必要的库文件。同时,根据项目需求,可能还需要更新到最新版本的POI库,以获得更好的性能和兼容性。
Java读取Excel文件是开发过程中常见的任务,尤其是在处理数据导入导出、数据分析或者报表生成时。这个名为"java读取excel文件jar包20181223"的资源可能包含了一些帮助Java开发者实现这一功能的库。下面将详细讨论...
这个库允许开发者以编程方式创建、修改和读取Excel文档,极大地拓展了Java在电子表格处理上的能力。POI 4.0是该库的一个较新版本,相较于之前的版本,它可能包含了更多优化、性能提升和新的API特性。 首先,让我们...
在Java环境中,如果你需要使用POI库来读取、写入或操作Excel文件,你需要确保你的项目中包含了正确的JAR文件。在这个场景中,你提到的几个JAR文件都是Apache POI的不同版本和组件: 1. **poi-3.8.jar**:这是Apache...
使用POI读取Excel文件时,首先需要创建`FileInputStream`对象,然后通过`WorkbookFactory`创建对应的`Workbook`对象。`Workbook`代表整个Excel文件,而`Sheet`代表单个工作表。接着,通过`Row`和`Cell`对象访问具体...