Java-Poi 读取excel 数据
一直想着使用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 数据的更多相关文章
- Java POI读取Excel数据,将数据写入到Excel表格
1.准备 首先需要导入poi相应的jar包,包括: 下载地址:http://pan.baidu.com/s/1bpoxdz5 所需要的包的所在位置包括: 2.读取Excel数据代码 package S ...
- Java POI 读取Excel数据转换为XML格式
1.首先要下载poi相关的包:http://poi.apache.org/ ,以下是所需的jar包 2.贴上详细的代码 public class ExcelToXml { /** * 将excel的 ...
- 使用poi读取excel数据示例
使用poi读取excel数据示例 分两种情况: 一种读取指定单元格的值 另一种是读取整行的值 依赖包: <dependency> <groupId>org.apache.poi ...
- POI读取Excel数据
POI读取Excel表格数据 * {所需相关jar下载: * commons-collections4-4.4.jar * commons-compress-1.19.jar * poi-4.1.1. ...
- poi——读取excel数据
单元格类型 读取Excel数据 package com.java.test.poi; import java.io.File; import java.io.FileInputStream; impo ...
- java 使用POI读取excel数据
原文:http://doc.okbase.net/0201zcr/archive/161440.html 一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Ja ...
- POI读取Excel数据保存到数据库,并反馈给用户处理信息(导入带模板的数据)
今天遇到这么一个需求,将课程信息以Excel的形式导入数据库,并且课程编号再数据库中不能重复,也就是我们需要先读取Excel提取信息之后保存到数据库,并将处理的信息反馈给用户.于是想到了POI读取文件 ...
- java POI读取excel 2007/2003
2003版office excel读取 import java.io.FileNotFoundException; import java.io.IOException; import java.io ...
- java poi 读取excel内容
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; import or ...
- Java——poi读取Excel文件
1.创建文件流,打开EXCEL文件 FileInputStream excelFile = new FileInputStream(excelPath); XSSFWorkbook workbook ...
随机推荐
- oracle recyclebin详解(闪回删除的表)
今天在SOA应用数据库上运用DBMS_REDEFITION包进行在线非分区表转换分区表操作时,本想DROP掉建的临时表cube_scope_temp不小心后面忘记加"temp"直接 ...
- MSSQL 获取数据库字段类型
SELECT col.name AS 列名, typ.name as 数据类型, col.max_length AS 占用字节数, col.precision AS 数字长度, col.scale A ...
- Moodle的qq登录版块的使用
在这篇Moodle的qq登录(QQ登陆)版块的使用教程中,我们假定你已经有了一个有域名,外网能访问的Moodle2.4+网站,并且数据库使用的是mysql. 我们将提供Moodle的QQ登录版块的下载 ...
- nginx请求体读取(二)
2,丢弃请求体 一个模块想要主动的丢弃客户端发过的请求体,可以调用nginx核心提供的ngx_http_discard_request_body()接口,主动丢弃的原因可能有很多种,如模块的业务逻辑压 ...
- VirtualBox 上安装CentOS 6.5
目标:1.在VirtualBox中安装CentOS2.配置虚拟机网络,实现: a.主机联网后,宿机能够通过主机上网 b.不管主机联网与否,主机都能SSH登录宿机,并且主宿机能互相传送文件 ...
- AprioriTID algorithm
What is AprioriTID? AprioriTID is an algorithm for discovering frequent itemsets (groups of items ap ...
- C# 如何获取当前应用程序的父目录
//获取当前运行路径的上级目录(父目录) System.IO.DirectoryInfo topDir = System.IO.Directory.GetParent(System.Environme ...
- C#中使用MATLAB
原文 http://www.cnblogs.com/sorex/archive/2012/08/01/2617469.html 闲来无聊写篇文章聊以慰藉. 本文写了Matlab的2种基本调用方式,且同 ...
- word2vec 入门(二)使用教程篇
word2vec 要解决问题: 在神经网络中学习将word映射成连续(高维)向量,这样通过训练,就可以把对文本内容的处理简化为K维向量空间中向量运算,而向量空间上的相似度可以用来表示文本语义上的相似度 ...
- poj2392 Space Elevator(多重背包)
http://poj.org/problem?id=2392 题意: 有一群牛要上太空.他们计划建一个太空梯-----用一些石头垒.他们有K种不同类型的石头,每一种石头的高度为h_i,数量为c_i,并 ...