Java读写Excel的包是Apache POI(项目地址:http://poi.apache.org/),因此需要先获取POI的jar包,本实验使用的是POI 3.9稳定版。

Apache POI 代码例子地址:http://poi.apache.org/spreadsheet/quick-guide.html

本例子可以读取Microsoft Office Excel 2003/2007/2010,具体代码及注释如下:

读取“.xls”格式使用  import org.apache.poi.hssf.usermodel.*;包的内容,例如:HSSFWorkbook

读取“.xlsx”格式使用 import org.apache.poi.xssf.usermodel.*; 包的内容,例如:XSSFWorkbook

读取两种格式使用    import org.apache.poi.ss.usermodel.*    包的内容,例如:Workbook

引入包如下:

1 importorg.apache.poi.ss.usermodel.Cell;2 importorg.apache.poi.ss.usermodel.Row;3 importorg.apache.poi.ss.usermodel.Sheet;4 importorg.apache.poi.ss.usermodel.Workbook;5 importorg.apache.poi.ss.usermodel.WorkbookFactory;6 import org.apache.poi.ss.usermodel.DateUtil;

【其中的DateUtil不是必须的】

1 /**

2 * 读取Excel测试,兼容 Excel 2003/2007/20103 */

4 publicString readExcel()5 {6 SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");7 try{8 //同时支持Excel 2003、2007

9 File excelFile = new File("/home/zht/test.xls"); //创建文件对象

10 FileInputStream is = new FileInputStream(excelFile); //文件流

11 Workbook workbook = WorkbookFactory.create(is); //这种方式 Excel 2003/2007/2010 都是可以处理的

12 int sheetCount = workbook.getNumberOfSheets(); //Sheet的数量13 //遍历每个Sheet

14 for (int s = 0; s < sheetCount; s++) {15 Sheet sheet =workbook.getSheetAt(s);16 int rowCount = sheet.getPhysicalNumberOfRows(); //获取总行数17 //遍历每一行

18 for (int r = 0; r < rowCount; r++) {19 Row row =sheet.getRow(r);20 int cellCount = row.getPhysicalNumberOfCells(); //获取总列数21 //遍历每一列

22 for (int c = 0; c < cellCount; c++) {23 Cell cell =row.getCell(c);24 int cellType =cell.getCellType();25 String cellValue = null;26 switch(cellType) {27 case Cell.CELL_TYPE_STRING: //文本

28 cellValue =cell.getStringCellValue();29 break;30 case Cell.CELL_TYPE_NUMERIC: //数字、日期

31 if(DateUtil.isCellDateFormatted(cell)) {32 cellValue = fmt.format(cell.getDateCellValue()); //日期型

33 }34 else{35 cellValue = String.valueOf(cell.getNumericCellValue()); //数字

36 }37 break;38 case Cell.CELL_TYPE_BOOLEAN: //布尔型

39 cellValue =String.valueOf(cell.getBooleanCellValue());40 break;41 case Cell.CELL_TYPE_BLANK: //空白

42 cellValue =cell.getStringCellValue();43 break;44 case Cell.CELL_TYPE_ERROR: //错误

45 cellValue = "错误";46 break;47 case Cell.CELL_TYPE_FORMULA: //公式

48 cellValue = "错误";49 break;50 default:51 cellValue = "错误";52 }53 System.out.print(cellValue + " ");54 }55 System.out.println();56 }57 }58

59 }60 catch(Exception e) {61 e.printStackTrace();62 }63

64 returnAction.SUCCESS;65 }

如果执行的代码的过程中报出如下错误:

poi导入excel表格数据时Cannot get a text value from a numeric cell

异常描述:在导入excel的时候在获取excel单元格数据的时候会出现Cannot get a text value from a numeric cell的异常抛出。

异常原因:poi读取excel单元格的数据,cell有不同的数据类型(CELL_TYPE_NUMERIC,CELL_TYPE_STRING,CELL_TYPE_FORMULA),如果cell中的数据是数值的话,如果你没有给他设置cell的类型的话。默认会认为是CELL_TYPE_NUMERICl类型,如果从一个NUMBER类型的Cell使用.cell.getStringCellValue()读取出一个字符串就会出错。

解决的方法:在读取数据之前,设置cell的类型为CELL_TYPE_STRING;

cell.setCellType(Cell.CELL_TYPE_STRING);

所以,上面的代码可以简单写成:

1 /**

2 * 读取Excel测试,兼容 Excel 2003/2007/20103 */

4 publicString readExcel()5 {6 SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");7 try{8 //同时支持Excel 2003、2007

9 File excelFile = new File("/home/zht/test.xls"); //创建文件对象

10 FileInputStream is = new FileInputStream(excelFile); //文件流

11 Workbook workbook = WorkbookFactory.create(is); //这种方式 Excel 2003/2007/2010 都是可以处理的

12 int sheetCount = workbook.getNumberOfSheets(); //Sheet的数量13 //遍历每个Sheet

14 for (int s = 0; s < sheetCount; s++) {15 Sheet sheet =workbook.getSheetAt(s);16 int rowCount = sheet.getPhysicalNumberOfRows(); //获取总行数17 //遍历每一行

18 for (int r = 0; r < rowCount; r++) {19 Row row =sheet.getRow(r);20 int cellCount = row.getPhysicalNumberOfCells(); //获取总列数21 //遍历每一个单元格

22 for (int c = 0; c < cellCount; c++) {23 Cell cell =row.getCell(c);24 int cellType =cell.getCellType();25 String cellValue = null;26

27 //在读取单元格内容前,设置所有单元格中内容都是字符串类型

28 cell.setCellType(Cell.CELL_TYPE_STRING);29

30 //按照字符串类型读取单元格内数据

31 cellValue =cell.getStringCellValue();32

33 /*在这里可以对每个单元格中的值进行二次操作转化*/

34

35 System.out.print(cellValue + " ");36 }37 System.out.println();38 }39 }40

41 }42 catch(Exception e) {43 e.printStackTrace();44 }45

46 returnAction.SUCCESS;47 }

项目中原来就有maven的相关poi依赖,具体如下:

1 maven依赖配置:2

3

4 fakepath

5 poi-ooxml-schemas

6 3.14-20160307

7

8 fakepath

9 poi-scratchpad

10 3.14-20160307

11

12 fakepath

13 poi-ooxml

14 3.14-20160307

15

16 fakepath

17 poi-examples

18 3.14-20160307

19

20 fakepath

21 poi-excelant

22 3.14-20160307

23

24 fakepath

25 poi

26 3.14-20160307

27

28 fakepath

29 xmlbeans

30 2.6.0

31

32

poiexcel 读取引用列_java用poi读取Excel表格中的数据相关推荐

  1. java搜索excel表格里的数据_Java读取Excel表格中的数据

    前言 本文主要讲述如何在Java中读取Excel表中的数据并在控制台输出,实现工具为Eclipse 提示:以下是本篇文章正文内容,下面案例可供参考 一.添加jar包文件 描述:在Java中导入导出Ex ...

  2. POI:从Excel文件中读取数据,向Excel文件中写入数据,将Excel表格中的数据插入数据库,将数据库中的数据添加到Excel表

    POI 简介: POI是Apache软件基金会用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能. ...

  3. python读取excel表格-python读取excel表格中的数据

    使用python语言实现Excel 表格中的数据读取,需要用到xlrd.py模块,实现程序如下: import xlrd #导入xlrd模块 class ExcelData(): def __init ...

  4. matlab读取excel表作图,读取Excel表格数据进行绘图-如何将excel表格中大量数据导入matlab中并作图...

    matlab 读取excel时间数据并绘图 没看懂你的格式是什么意思, 不过我一般读取excel都用xlsread函数,你也可以试一试 [a,b,c]=xlsresd('data.xls');%r如果 ...

  5. Java读取Excel表格中的数据

    文章目录 前言 一.添加jar包文件 1.在Eclipse工程下新建lib文件夹 2.复制jar包 3.将jar包粘贴到Eclipse中 4.配置构建路径 二.案例代码 1.新建类 2.获取Excel ...

  6. python3读取excel数据-python3 读取Excel表格中的数据

    需要先安装openpyxl库 通过pip命令安装: pip install openpyxl 源码如下: #!/usr/bin/python3 #-*- coding:utf-8 -*- import ...

  7. PhpExcel读取Excel表格中的数据

    <html> <head> <title> 浏览Excel表格中的数据</title> <head> <center> < ...

  8. java实现读取excel表格中的数据,兼容xls和xlsx

    前言 利用 java 实现读取 excel 表格中的数据,兼容 xls 与 xlsx 格式,不用额外做区分,写不同的实现方法. 引入的依赖包 <dependency><groupId ...

  9. Java读取office-word(doc、docx)里面表格中的数据

    依赖 <!--Java读取word中的表格数据--><dependency><groupId>org.apache.poi</groupId><a ...

最新文章

  1. js高级教程阅读笔记 第五章-引用类型(5.6)
  2. java mysql in_MySQL中Exists和In的使用
  3. 2018 OO第一次总结(作业1-3)
  4. 2020秋季学期教学委员会第一次全体会议
  5. 4+5的值是python_Python基础:数据类型-数字(5)
  6. Win32项目关于MessageBox参数的详细说明
  7. 数字摄像机常见术语和参数介绍
  8. deepin启动盘无法引导安装_deepin 无法启动问题解决
  9. centos7 redis分布式集群问题总结
  10. NLP特征工程(待完善细节)
  11. Ubuntu 解决WPS缺少宋体,微软雅黑等中文字体
  12. Matlab 绘制直方图、面积图、饼图、针状图
  13. 高手教你如何从零开始学游戏编程
  14. arm64的ioremap_ARMv8 内存管理架构.学习笔记
  15. ai切换rgb模式_AI基础教程:如何更改CMYK模式?更改的两个方法
  16. 从共射极放大电路到选频放大电路到相位测距上的应用
  17. 对于一个基本有序的数组进行排序
  18. 微信小程序汽车租赁平台+后台管理系统
  19. 磁共振T1 T2 T1WI T2WI含义
  20. 3g安卓市场_安卓离场,鸿蒙能否破局?

热门文章

  1. 宝来客:节日送礼年轻人更偏爱珠宝?
  2. Java集合框架——数据结构(二)
  3. 英雄联盟手游的评价与建议
  4. Vue动态引入JS文件
  5. 文件共享服务器推荐配置和系统,设置win文件共享服务器
  6. 解决eclipse+tomcat开发时候修改配置文件自动重启服务器问题
  7. 百度技术总监谈12306高性能海量并发网站架构设计
  8. ionic3 Bug收集
  9. C# PropertyGrid控件应用心得
  10. java毕业设计线上书城系统源码+lw文档+mybatis+系统+mysql数据库+调试