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 ...
随机推荐
- N - Robot Motion(第二季水)
Description A robot has been programmed to follow the instructions in its path. Instructions for the ...
- Mysql优化之创建高性能索引(二)
1.索引的优点 索引可以让服务器快速地定位到表的指定位置.总结下来有三大优点: 索引大大减少了服务器需要扫描的数据量 索引可以帮助服务器避免排序和临时表 索引可以将随机I/O变为顺序I/O 2.高性能 ...
- ctype.h库函数
头文件ctype.h声明了一组用于分类和转换单个字符的函数.所有的函数都接收一个int型的参数,并返回一个int——返回的int可能代表一个字符,也可能代表的是bool值(0为假,非0为真). 你可能 ...
- 【写一个自己的js库】 3.添加几个处理字符串的方法
1.生成重复的字符串 if(!String.repeat){ String.prototype.repeat = function (count){ return new Array(count + ...
- Go语言语法汇总
最近看了看GoLang,把Go语言的语法总结了一下,做个快速参考 数据类型 var varName type,var var1,var2… type,var varName type = Value, ...
- [转]JSOM绘制地图区块及航道路径
From :http://support.sailstech.com/kb/c73fd2405d79911253e568ccdc69256dc7c8fb5c/josm 步驟一: 使用JOSM繪製地圖區 ...
- Aix5~6小机运维
1,0516-787 extendlv: Maximum allocation for logical volume hd3 is 512 smitt chlv改max logical ...
- sysbench的安装与使用
sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试.数据库目前支持MySQL/Oracle/PostgreSQL 安装过程(rhel5.8+mys ...
- Ext 怎么发ajax请求
Ext3.3完整包 Ext3.3中文文档 数据表的结构是:数据表table > 记录record > 字段 store的结构是: Ext.data.Store > Ext.dat ...
- Linux内核中常见内存分配函数(二)
常用内存分配函数 __get_free_pages unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order) __get_f ...