一直想着使用java操作excel,但有时各种原因一直没有实现。由于工作无意间做了个其他demo,为了进一步发散就涉及到了使用excel,为此开始正式接触POI,虽然限制不是很了解POI,但是通过查阅各种资料,现在终于实现了excel 的简单读取。以下是实现的代码。并带有详细注释,方便自己也方便他人。

package net.oschina.excel;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream; import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadExcel { public static void read(InputStream inputStream) throws IOException {
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
/*
获取单个sheet 页,单个单元格的数据。
XSSFSheet sheet = workbook.getSheetAt(0);
XSSFRow row0 = sheet.getRow(0);
XSSFCell cell = row0.getCell(0);
System.out.println(cell.getRichStringCellValue().getString());*/
//获取excel表格中的所有数据
//workbook.getNumberOfSheets(); 获取sheet 页个数。
int sheetNum = workbook.getNumberOfSheets();
//System.out.println(sheetNum);
//for循环遍历单元格内容
for (int sheetIndex = 0; sheetIndex < sheetNum; sheetIndex++) {
//根据下标获取sheet
XSSFSheet sheet = workbook.getSheetAt(sheetIndex);
//workbook.getSheetName(sheetIndex) 根据下标获取sheet 名称
System.out.println("sheet序号:"+sheetIndex+",sheet名称:"+workbook.getSheetName(sheetIndex));
//循环该sheet页中的有数据的每一行
//打印行号,某人起始是0 System.out.println(sheet.getLastRowNum());
//打印行数
System.out.println(sheet.getPhysicalNumberOfRows());
//遍历每行内容从行号为0开始
for (int rowIndex = 0; rowIndex < sheet.getPhysicalNumberOfRows(); rowIndex++) {
//System.out.println(rowIndex);打印遍历行号
//根据行号,遍历该行
XSSFRow row = sheet.getRow(rowIndex);
//如果该行为空,则结束本次循环
if (row == null) {
continue;
}
//num 为该行 有效单元格个数,取 num的话,取值会不全。 lastnum为 有效单元格最后各个单元格的列号,这样可以遍历取到该行所有的单元格
//System.out.println("num " + row.getPhysicalNumberOfCells());
//System.out.println("lastnum " + row.getLastCellNum());
for(int cellnum = 0;cellnum<row.getLastCellNum(); cellnum++){
XSSFCell cell = row.getCell(cellnum);
if (cell != null) { cell.setCellType(Cell.CELL_TYPE_STRING);
//cell.setCellType(Cell.CELL_TYPE_STRING); 是为了修改数据类型,因为我的单元格中有数字类型。如果不这样写会出现下面的错误。
/* Exception in thread "main" java.lang.IllegalStateException:
Cannot get a text value from a numeric cell
at org.apache.poi.xssf.usermodel.XSSFCell.typeMismatch(XSSFCell.java:991)
at org.apache.poi.xssf.usermodel.XSSFCell.getRichStringCellValue(XSSFCell.java:399)
at net.oschina.excel.ReadExcel.read(ReadExcel.java:55)
at net.oschina.excel.ReadExcel.main(ReadExcel.java:68) POI操作Excel时数据Cell有不同的类型,当我们试图从一个数字类型的Cell读取出一个字符串并写入数据库时,
就会出现Cannot get a text value from a numeric cell的异常错误,解决办法就是先设置Cell的类型,
然后就可以把纯数字作为String类型读进来了: */
//打印出读出的数据。
System.out.println("第"+rowIndex+"行 第"+cellnum+"列 内容为:"+cell.getRichStringCellValue().getString());
}
}
}
System.out.println("------------------+++++++++++++++++++--------------------");
}
} public static void main(String[] args) {
InputStream inputStream = null;
try {
//获取文件标识符。
inputStream = new FileInputStream(new File("E:\\ReadDemo.xlsx"));
//System.out.println(inputStream);
read(inputStream);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

Java-Poi 读取excel 数据的更多相关文章

  1. Java POI读取Excel数据,将数据写入到Excel表格

    1.准备 首先需要导入poi相应的jar包,包括: 下载地址:http://pan.baidu.com/s/1bpoxdz5 所需要的包的所在位置包括: 2.读取Excel数据代码 package S ...

  2. Java POI 读取Excel数据转换为XML格式

    1.首先要下载poi相关的包:http://poi.apache.org/  ,以下是所需的jar包 2.贴上详细的代码 public class ExcelToXml { /** * 将excel的 ...

  3. 使用poi读取excel数据示例

    使用poi读取excel数据示例 分两种情况: 一种读取指定单元格的值 另一种是读取整行的值 依赖包: <dependency> <groupId>org.apache.poi ...

  4. POI读取Excel数据

    POI读取Excel表格数据 * {所需相关jar下载: * commons-collections4-4.4.jar * commons-compress-1.19.jar * poi-4.1.1. ...

  5. poi——读取excel数据

    单元格类型 读取Excel数据 package com.java.test.poi; import java.io.File; import java.io.FileInputStream; impo ...

  6. java 使用POI读取excel数据

    原文:http://doc.okbase.net/0201zcr/archive/161440.html 一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Ja ...

  7. POI读取Excel数据保存到数据库,并反馈给用户处理信息(导入带模板的数据)

    今天遇到这么一个需求,将课程信息以Excel的形式导入数据库,并且课程编号再数据库中不能重复,也就是我们需要先读取Excel提取信息之后保存到数据库,并将处理的信息反馈给用户.于是想到了POI读取文件 ...

  8. java POI读取excel 2007/2003

    2003版office excel读取 import java.io.FileNotFoundException; import java.io.IOException; import java.io ...

  9. java poi 读取excel内容

    import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; import or ...

  10. Java——poi读取Excel文件

    1.创建文件流,打开EXCEL文件 FileInputStream excelFile = new FileInputStream(excelPath); XSSFWorkbook workbook ...

随机推荐

  1. [Linked List]Partition List

    Total Accepted: 53879 Total Submissions: 190701 Difficulty: Medium Given a linked list and a value x ...

  2. python面向对象(下)

    继承 继承描述了基类的属性如何"遗传"给派生类.一个子类可以继承它的基类的任何属性,不管是数据属性还是方法.创建子类的语法看起来与普通(新式)类没有区别,一个类名,后跟一个或多个需 ...

  3. mysql插入返回当前生成的主键

     1:sql中需要添加属性 keyColumn="base_price_id" keyProperty="basePriceId" useGeneratedKe ...

  4. Uncaught TypeError: Object [object Object] has no method 'live'

    $( selector ).live( events, data, handler );                // jQuery 1.3+$( document ).delegate( se ...

  5. LogBoy运行截图

  6. jquery判断客户端的类型

    针对不同客户端下载链接的页面响应样式不一样,更人性点而已 //匹配客户端类型 var isAndroid = navigator.userAgent.toLowerCase().match(/andr ...

  7. Python之路第七天,基础(9)-面向对象(上)

    面向对象的编程思想 回想 我们所学过的编程方法: 面向过程:根据业务逻辑从上到下写堆叠代码. 函数式编程:将重复的代码封装到函数中,只需要写一遍,之后仅调用函数即可. 面向过程编程最易被初学者接受,其 ...

  8. 安全运维之:Linux系统账户和登录安全(转)

    三.删减系统登录欢迎信息 系统的一些欢迎信息或版本信息,虽然能给系统管理者带来一定的方便,但是这些信息有时候可能被黑客利用,成为攻击服务器的帮凶,为了保证系统的安全,可以修改或删除某些系统文件,需要修 ...

  9. 解决WEB页面上"焦点控制"一法

    解决WEB页面上"焦点控制"一法 分类: Html/Css2011-11-11 17:28 125人阅读 评论(0) 收藏 举报 webjavascriptasp.netbutto ...

  10. firebug加载不了js脚本文件问题

    转载自:http://tieba.baidu.com/p/1008322286 现象: 页面中有加载js文件,但是firebug却提示:    本页面不包含 Javascript 如果 <scr ...