使用poi读写excel文件

Posted on 2011 年 03 月 16 日 by 苍之涛

今天一个同学需要处理一个excel文件,于是我便在网上搜了一下方法,顺便自己研究一下。刚刚参考网上资料,使用poi库测试了一下读取excel文件,效果不错,跟大家分享一下。

要读取的excel文件内容如下:

第一列是数值型,第二列是字符型,代码如下:

01 package poi;
02  
03 import java.io.FileInputStream;
04 import java.io.InputStream;
05 import java.util.Iterator;
06  
07 import org.apache.poi.hssf.extractor.ExcelExtractor;
08 import org.apache.poi.hssf.usermodel.HSSFCell;
09 import org.apache.poi.hssf.usermodel.HSSFRow;
10 import org.apache.poi.hssf.usermodel.HSSFSheet;
11 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
12 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
13 import org.apache.poi.ss.usermodel.Cell;
14 import org.apache.poi.ss.usermodel.Row;
15  
16 /**
17  * 测试poi读取excel文件内容
18  * @author lihui
19  *
20  */
21 public class TestRead {
22  
23         /**
24          * @param args
25          */
26         public static void main(String[] args){
27  
28                 HSSFWorkbook wb = null;
29                 POIFSFileSystem fs = null;
30                 try {
31                         //设置要读取的文件路径
32                         fs = new POIFSFileSystem(new FileInputStream("d:\\book1.xls"));
33                         //HSSFWorkbook相当于一个excel文件,HSSFWorkbook是解析excel2007之前的版本(xls)
34                         //之后版本使用XSSFWorkbook(xlsx)
35                         wb = new HSSFWorkbook(fs);
36                         //获得sheet工作簿
37                         HSSFSheet sheet = wb.getSheetAt(0);
38                         //获得行
39                         HSSFRow row = sheet.getRow(3);
40                         //获得行中的列,即单元格
41                         HSSFCell cell = row.getCell(0);
42                         //获得单元格中的值,这里该单元格的值为数字,所以使用getNumericCellValue,如为字符串则会报错
43                         //如何取别的值,见print2方法
44                         double msg = cell.getNumericCellValue();
45                         System.out.println(msg);
46                         print1();
47                         print2();
48                 } catch (Exception e) {
49                         e.printStackTrace();
50                 }
51         }
52  
53         public static void print1() throws Exception {
54                 InputStream is = new FileInputStream("d:\\book1.xls");
55                 HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(is));
56                 //A text extractor for Excel files.
57                 //Returns the textual content of the file, suitable for indexing by something like Lucene,
58                 //but not really intended for display to the user.
59                 //用来获得整个excel文件的内容,表示为字符串
60                 ExcelExtractor extractor = new ExcelExtractor(wb);
61                 //字符串所包含的类型,详见api
62                 extractor.setIncludeSheetNames(true);
63                 extractor.setFormulasNotResults(false);
64                 extractor.setIncludeCellComments(true);
65                 //获得字符串形式
66                 String text = extractor.getText();
67                 System.out.println(text);
68         }
69  
70         public static void print2() throws Exception {
71                 HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(
72                                 "d:\\book1.xls"));
73                 HSSFSheet sheet = wb.getSheetAt(0);
74                 //迭代行
75                 for (Iterator<Row> iter = (Iterator<Row>) sheet.rowIterator(); iter
76                                 .hasNext();) {
77                         Row row = iter.next();
78                         //迭代列
79                         for (Iterator<Cell> iter2 = (Iterator<Cell>) row.cellIterator(); iter2
80                                         .hasNext();) {
81                                 Cell cell = iter2.next();
82                                 //用于测试的文件就2列,第一列为数字,第二列为字符串
83                                 //对于数字cell.getCellType的值为HSSFCell.CELL_TYPE_NUMERIC,为0
84                                 //对于字符串cell.getCellType的值为HSSFCell.CELL_TYPE_STRING,为1
85                                 //完整的类型列表请查看api
86                                 String content = cell.getCellType()==HSSFCell.CELL_TYPE_NUMERIC?cell.getNumericCellValue()+"":cell.getStringCellValue();
87                                 System.out.println(content);
88                         }
89                 }
90         }
91  
92 }

下面是创建一个excel文件

show source

代码是参考网上自己做了些修改,加了些注释,已经写得很详细了,我就不多说了。poi库的下载地址可以去官方http://apache.freelamp.com/jakarta/poi/ 下载,我使用的是最新稳定版3.7,这里我也提供单独的jar包给大家下载http://cangzhitao.com/wp-content/uploads/2011/03/poi-3.7-20101029.jar

附cell类型说明:

This entry was posted in Java and tagged CELL_TYPE_NUMERIC, excel, getCellType, HSSFCell, HSSFSheet, HSSFWorkbook, poi, 读取excel. Bookmark the permalink.

使用poi读写excel文件相关推荐

  1. java读写excel文件poi_Java利用POI读写Excel文件工具类

    本文实例为大家分享了Java读写Excel文件工具类的具体代码,供大家参考,具体内容如下 package com.test.app.utils; import java.io.File; import ...

  2. Java:apache.poi读写Excel文件

    依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</ar ...

  3. Selenium利用POI读写excel文件

    第三方工具POI,由于Java的跨平台特性,所以Java没有直接操作excel文件的库支持.在自动化测试,有些我们的测试数据是放到excel文件中,所以需要懂得如何操作获取excel内的内容. 下载P ...

  4. 使用EasyExcel读写Excel文件

    笔者之前一直使用POI读写Excel文件,最近有个需求需要读取大概80万行数据的Excel,使用POI读取到10.2万行左右就卡死不动了,而且CPU占用直接拉满到100%,内存占用也很高. 查找资料后 ...

  5. 基于POI的读写Excel文件的工具类

    依赖的jar包: import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStrea ...

  6. Java 使用 POI 对 Excel文件 进行读写操作

    Java 使用 POI 对 Excel文件 进行读写操作 一.背景 目前正在做一个问卷功能模块,收集完问卷信息后,需要将数据库中的数据导出到Excel数据表中进行留存,因此就学习了在Java中如何对E ...

  7. Java操作Excel之POI:java读写excel文件以及打印设置

    Java操作Excel之POI:java读写excel文件以及打印设置 POI的jar包下载地址:http://poi.apache.org/download.html 注意:项目中导入poi 4.0 ...

  8. springboot中使用poi导出excel文件(亲测实现了第一个功能)

    1.POI简介 Jakarta POI 是一套用于访问微软格式文档的Java API. 组件HWPF用于操作Word的; 组件HSSF用于操作Excel格式文件. 2.常用组件 HSSFWorkboo ...

  9. Apache POI操作Excel文件

    Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用PO ...

最新文章

  1. 数字图像处理——第三章 空间域图像增强(灰度变换和直方图处理)
  2. linux 删除20日前数据,Linux 维护常用命令
  3. 27.能否在构造函数中抛出异常?析构函数呢?
  4. 简述抽象和封装,对你学习Java有一些作用
  5. BaseRecyclerViewAdapterHelper结合autolayout使用
  6. 大海中到处是水,海底隧道是怎样修建的?看完真佩服工程师的智慧
  7. 居家隔离的第5天,我们整了个六边形战士
  8. 【Java】JavaSocket编程开发聊天室-总览与部分客户端界面
  9. 酷派D530刷机指引之官方ROM
  10. 中南财经政法大学2014-2015学年学生奖励汇总表
  11. 屏幕录像软件Community Clips Recorder简介及其使用技巧(郝宪玮)
  12. Stacked Hourglass Networks
  13. 万字吐血好文,一线分析师的4大总结。
  14. mysql语法使用总结
  15. 独立性与互不相容的区别
  16. Python pta题目
  17. java设计奥运图标_15组优秀的奥运会、体育运动类图标系列网页素材
  18. java计算机毕业设计-线上自助旅游报名网-源程序+mysql+系统+lw文档+远程调试
  19. 经典名言名句(摘抄)
  20. Yunzai-Bot v3—Linux服务器搭建教程

热门文章

  1. Python: Python 多版本管理
  2. Google Ads你知道多少,谷歌广告投放又有哪些要注意的细节?
  3. 10个Spring Boot快速开发的项目,接私活利器(快速、高效)
  4. android pdf 文件加密,加密PDF与PdfBox-Android不兼容
  5. JAVA面试集合类之ArrayList详解
  6. 操作系统——银行家算法(银行家和房地产开发商的爱恨情仇)
  7. 毕昇JDK,重现了 “活字印刷术” 的传奇
  8. unity 性能优化之GPU和资源优化
  9. 【网络工程】如何本地调试微信公众号开发教程(Nginx代理方法)
  10. 执行 Workgroup Manager 维护任务