一直想着使用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. div+css+javascript 走马灯图片轮换显示

    效果如图 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  2. JQ----树杈型导航

    简单的做了一个树杈型的导航结构如下所示: 废话不多说,上代码: HTML: <div class="wrapper"> <div class="tabt ...

  3. 新测 thinkphp3.2 整合 PHPMailer 发送邮件

    PHPMailer 的官方网站:http://phpmailer.worxware.com/ PHPMailer 最新类库下载地址:[点击下载] PHPMailer GitHub 下载地址:https ...

  4. js里面“===”与“==”的区别

    首先,== equality 等同,=== identity 恒等. ==, 两边值类型不同的时候,要先进行类型转换,再比较. ==,不做类型转换,类型不同的一定不等.  下面分别说明: 先说 === ...

  5. 修改IE8搜索框为指定搜索引擎,如CSDN、百度知道等

    1.运行regedit打开注册表编辑器2.找到\HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchScopes\3.添加新搜索项 ...

  6. Amazon 解决下载文件乱码

    大家在做多个站点的时候,可能会遇到下载下来的报告文件出现乱码. 法国站点和意大利站点均会出现这样的情况,那怎么解决呢? 这是由于编码的问题而导致,在我们读取数据插入到本地数据库的时候,不妨先将格式转成 ...

  7. Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等

    仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 微信 微信 微信 ...

  8. c++一些面试题目

    1.What is achieved by prefixing the 'static' keyword to a file-level function or file-level variable ...

  9. 顶尖大数据挖掘实战平台(TipDM-H8)产品白皮书

        顶尖大数据挖掘实战平台 (TipDM-H8)           产  品  说  明  书 广州泰迪智能科技有限公司 版权所有 地址: 广州市经济技术开发区科学城232号 网址: http: ...

  10. CURL使用HTTPS的技术小结

    摘自http://www.51testing.com/html/14/175414-248202.html CURL使用HTTPS的技术小结 cURL是linux下命令行提交HTTP(S)请求的一个很 ...