Apache POI是Apache软件基金会的开放源码函式库,用来帮助Java程序读写Microsoft Office的格式档案。POI提供了下面这几种类型对Microsoft Office的格式档案进行解析:
HSSF - 提供读写Microsoft Excel XLS格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。
HWPF - 提供读写Microsoft Word DOC格式档案的功能。
HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读Microsoft Visio格式档案的功能。
HPBF - 提供读Microsoft Publisher格式档案的功能。
你可以访问POI的主页http://poi.apache.org/ 下载你喜欢的版本和了解更多的信息.
这里只介绍使用POI读取Excel文件,在读取Excel时首先要定位Excel文件的位置,然后通过POI的API生成一个工作表HSSFWorkbook对象:
File file = new File(filePath);
FileInputStream fint = new FileInputStream(file);
POIFSFileSystem poiFileSystem = new POIFSFileSystem(fint);
HSSFWorkbook workbook = new HSSFWorkbook(poiFileSystem);
可以通过HSSFWorkbook提供的getSheetAt(int sheetNum)访问对应的子工作表HSSFSheet,序号从'0'开始.在获得HSSFSheet对象后通过sheet.getRow(rowNum)方法获得子工作表的指定行HSSFRow,HSSFRow提供了getCell(short)方法访问其中的单元格对象.在处理单元格的时候要注意,不能简单使用HSSShell的getStringCellValue()方法获得单元格中的值,在我使用的版本中(2.0)没有提供自动类型转换的功能,所以在取值的时候要根据类型判断:
public static String getCell(HSSFCell cell) {
if (cell == null)
return "";
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC:
return cell.getNumericCellValue() + "";
case HSSFCell.CELL_TYPE_STRING:
return cell.getStringCellValue();
case HSSFCell.CELL_TYPE_FORMULA:
return cell.getCellFormula();
case HSSFCell.CELL_TYPE_BLANK:
return "";
case HSSFCell.CELL_TYPE_BOOLEAN:
return cell.getBooleanCellValue() + "";
case HSSFCell.CELL_TYPE_ERROR:
return cell.getErrorCellValue() + "";
}
return "";
}
HSSFCell没有提供时间类型常量,这时候你只能根据自己判断是否要将它转换成时间格式了: cell.getDateCellValue();
下面是一个简单的例子,你可以参考一下:
/**
* 打印Excel文件 。
* @author vwpolo
* <p>2009-9-15</p>
*/
public class PrintExcelTest {
public static void main(String[] args) throws Exception {
File file = new File("User.xls");
FileInputStream fint = new FileInputStream(file);
POIFSFileSystem poiFileSystem = new POIFSFileSystem(fint);
HSSFWorkbook workbook = new HSSFWorkbook(poiFileSystem);
HSSFSheet sheet = workbook.getSheetAt(0);
HSSFRow rowTitle = sheet.getRow(0);
Iterator<HSSFCell> iterTitle = rowTitle.cellIterator();
while(iterTitle.hasNext()) {
System.out.print(iterTitle.next().getStringCellValue()+" ");
}
System.out.println("");
HSSFRow rowUser = sheet.getRow(1);
Iterator<HSSFCell> iterUser = rowUser.cellIterator();
while(iterUser.hasNext()) {
System.out.print(getCell(iterUser.next())+" ");
}
System.out.println("\n");
System.out.println("出生日期:"+rowUser.getCell((short)3).getDateCellValue().toLocaleString());
}
public static String getCell(HSSFCell cell) {
if (cell == null)
return "";
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC:
return cell.getNumericCellValue() + "";
case HSSFCell.CELL_TYPE_STRING:
return cell.getStringCellValue();
case HSSFCell.CELL_TYPE_FORMULA:
return cell.getCellFormula();
case HSSFCell.CELL_TYPE_BLANK:
return "";
case HSSFCell.CELL_TYPE_BOOLEAN:
return cell.getBooleanCellValue() + "";
case HSSFCell.CELL_TYPE_ERROR:
return cell.getErrorCellValue() + "";
}
return "";
}
}
这里的User.xls文件时一个模板,
A1、C1的单元格格式是常规格式,B1、E1的单元格格式是文本,D1的单元格格式是日期
运行上面的例子会输出:
姓名 员工编号 所属公司 出生日期 身份证号码
张三 000018 上海 32117.0 370684198712066666
出生日期:1987-12-6 0:00:00
在那个迭代方法中无法对日期类型的判断,所以输出格式存在问题,可以将日期格式额外处理。
分享到:
相关推荐
apache poi 读取 Excel 的 jar 包 博文链接:https://wxinpeng.iteye.com/blog/231895
apache POI,文件读写 ,excel 对于使用apache poi 解析微软excel的一些文件
Java使用apache POI读取xlsx代码以及相关jar包
NULL 博文链接:https://wxb-j2ee.iteye.com/blog/1489526
本案例中利用Apache Poi读取Excel用法,源码注释详细基本用法!
自己花了几天时间写的基于Apache POI的Java 读取excel文件,功能还是比较齐全
apache poi解析Excel时报错,我将Excel打开后保存,就不会报错,我将重写的类从新打包这样问题虽然网上有解决方案,但是需要自己打包重写对应类,我已将这些步骤做好了。
开发人员可以使用Apache POI库来读取、写入和修改这些格式的文档。 提供多种API:Apache POI库提供了多种API,包括HSSF、XSSF、HWPF、XWPF、HSLF和XSLF等。这些API可以帮助开发人员处理不同类型的Office文档,例如...
利用 Apache POI 对 excel 操作并存入MySQL数据库的一个小demo。
Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Office文件的开源库。它包含类和方法对用户输入数据或文件到MS ...
POI项目:Java使用POI读取和写入Excel <groupId>org.apache.poi <artifactId>poi <groupId>org.apache.poi <artifactId>poi-ooxml </dependency>
spark-excel:一个用于通过Apache POI读取Excel文件的Spark插件
事件驱动解析是把文件转换成xml,然后一边读取一边解析,这样就对内存的占用就会很少,可以很好的处理poi出现OOM的问题。 maven添加需要的jar包 <groupId>org.apache.poi <artifactId>poi <version>3.15 ...
在此存储库中,我们有一个示例,确定如何使用apache poi读取Excel文件并将所有项目保存在mongoDB中 在此存储库中,我们有一些模块用于主要项目类,kafka服务,poi服务,最后保存在MongoDb中 excel文件上传 运行和...
主要给大家介绍了关于Poi读取Excel引发内存溢出问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。 Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2...
Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)...用它可以使用Java读取和创建,修改MS Excel文件.而且,还可以使用Java读取和创建MS Word和MSPowerPoint文件。Apache POI 提供Java操作Excel解决方案。
Apache POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目 从之前发布其他chm文件下载用户的反映看,有不少朋友反映下载后打开无法显示,这一般不是chm文件的问题,这里统一说明一下解决办法: 如果文件...
包括Apache POI源代码和Apache_POI_API.chm使用教程 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能。 结构: HSSF - 提供读写Microsoft Excel...