本文取自http://www.cnblogs.com/hongten/p/java_poi_excel_xls_xlsx.html

java中读取Excel文件并解析

  • Excel2007及以前的文件使用[HSSFWorkbook]6
  • Excel2007后的文件使用[XSSFWorkbook]6

使用poi的jar包

Common.java
public class Common {public static final String OFFICE_EXCEL_2003_POSTFIX = "xls";public static final String OFFICE_EXCEL_2010_POSTFIX = "xlsx";public static final String EMPTY = "";public static final String POINT = ".";public static final String NOT_FILE = "Not File!";
}
Util.java
public class Util {public static String getPostfix(String path){if( path == null || Common.EMPTY.equals(path.trim())){return Common.EMPTY;}if(path.contains(Common.POINT)){return path.substring(path.lastIndexOf(Common.POINT) + 1,path.length());}return Common.EMPTY;}
}
ReadExcel.java
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
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;import com.manniu.ninecloud.entities.Devices;/*** @Description 解析Excel文件* @data 2015-06-01* @author guo*/
public class ReadExcel {public List<Devices> readExcel(String path) throws IOException{if (path == null || Common.EMPTY.equals(path)) {return null;}else {String postfix = Util.getPostfix(path);if(!Common.EMPTY.equals(postfix)){if(Common.OFFICE_EXCEL_2010_POSTFIX.equals(postfix)){return readXlsx(path);}else if (Common.OFFICE_EXCEL_2003_POSTFIX.equals(postfix)) {return readXls(path);}} else {System.out.println(path+Common.NOT_FILE);}}return null;}/*** @读取2007及之前的Excel文档*/public List<Devices> readXlsx(String path) throws IOException {InputStream io = new FileInputStream(path);XSSFWorkbook xsBook = new XSSFWorkbook(io);Devices devices = null;List<Devices> list = new ArrayList<Devices>();//循环行for (int rowNum = 0; rowNum < xsBook.getNumberOfSheets(); rowNum++) {XSSFSheet xSheet = xsBook.getSheetAt(rowNum);if (xSheet == null) {continue;}for (int num = 1; num < xSheet.getLastRowNum(); num++) {XSSFRow xRow = xSheet.getRow(num);if (xRow != null) {devices = new Devices();devices.setState(Integer.parseInt(getValue(xRow.getCell(0))));devices.setType(Integer.parseInt(getValue(xRow.getCell(1))));devices.setModel(getValue(xRow.getCell(2)));devices.setVer(getValue(xRow.getCell(3)));devices.setPn(getValue(xRow.getCell(4)));devices.setVn(getValue(xRow.getCell(5)));devices.setSn(getValue(xRow.getCell(6)));list.add(devices);}}}return list;}//读取Excel2007前的.xls文件public List<Devices> readXls(String path) throws IOException {InputStream io = new FileInputStream(path);HSSFWorkbook hBook = new HSSFWorkbook(io);Devices devices = null;List<Devices> list = new ArrayList<Devices>();for (int rowNum = 0; rowNum < hBook.getNumberOfSheets(); rowNum++) {HSSFSheet hSheet = hBook.getSheetAt(rowNum);if (hSheet == null) {continue;}for (int num = 1; num < hSheet.getLastRowNum(); num++) {HSSFRow sRow = hSheet.getRow(num);if (sRow != null) {devices = new Devices();devices.setState(Integer.parseInt(getValue(sRow.getCell(0))));devices.setType(Integer.parseInt(getValue(sRow.getCell(1))));devices.setModel(getValue(sRow.getCell(2)));devices.setVer(getValue(sRow.getCell(3)));devices.setPn(getValue(sRow.getCell(4)));devices.setVn(getValue(sRow.getCell(5)));devices.setSn(getValue(sRow.getCell(6)));list.add(devices);}}}return list;}@SuppressWarnings("static-access")private String getValue(XSSFCell xCell){if(xCell.getCellType() == xCell.CELL_TYPE_BOOLEAN){return String.valueOf(xCell.getBooleanCellValue());}else if (xCell.getCellType() == xCell.CELL_TYPE_NUMERIC) {return String.valueOf(xCell.getNumericCellValue());}else {return String.valueOf(xCell.getStringCellValue());}   }@SuppressWarnings("static-access")private String getValue(HSSFCell hCell){if (hCell.getCellType() == hCell.CELL_TYPE_BOOLEAN) {return String.valueOf(hCell.getBooleanCellValue());}else if (hCell.getCellType() == hCell.CELL_TYPE_NUMERIC) {return String.valueOf(hCell.getNumericCellValue());}else {return String.valueOf(hCell.getStringCellValue());}}//Test mainpublic static void main(String[] args) throws IOException {String excel2003 = "D://test/test.xls";String excel2010 = "D://test/test1.xlsx";ReadExcel re = new ReadExcel();List<Devices> list = re.readExcel(excel2003);if(list != null){for (Devices devices : list) {System.out.println(devices.getState()+"--"+devices.getType());}}}
}

poi 包下载地址

java使用poi解析Excel文件相关推荐

  1. Java面试poi中excel版本大小_java 中 poi解析Excel文件版本问题解决办法

    java 中 poi解析Excel文件版本问题解决办法 发布时间:2020-10-02 03:46:15 来源:脚本之家 阅读:91 作者:程诺 poi解析Excel文件版本问题解决办法 poi解析E ...

  2. java解析excel报错,poi解析excel文件报错

    getFileMagic() only operates on streams which support mark(int) 使用 bis 解决 BufferedInputStream bis = ...

  3. Java 使用 POI 对 Excel文件 进行读写操作

    Java 使用 POI 对 Excel文件 进行读写操作 一.背景 目前正在做一个问卷功能模块,收集完问卷信息后,需要将数据库中的数据导出到Excel数据表中进行留存,因此就学习了在Java中如何对E ...

  4. java使用poi生成Excel文件并合并单元格

    java使用poi生成Excel文件并合并单元格        业务需要根据 分管部门 字段进行合并,现在提供一种思路. controller层 @Inject(target = "/inf ...

  5. poi解析Excel文件版本问题

    poi解析Excel文件时有两种格式: HSSFWorkbook格式用来解析Excel2003(xls)的文件 XSSFWorkbook格式用来解析Excel2007(xlsx)的文件 如果用HSSF ...

  6. java使用POI实现excel文件的读取,兼容后缀名xls和xlsx

    首先,引入所需的jar包: 如果是maven管理项目的jar包,只需在pom.xml中加上: [html] view plaincopy <!-- https://mvnrepository.c ...

  7. Java使用POI读取Excel文件

    上篇文章记录了简单的POI创建Excel文件,依赖导入可参考上篇 POI读取excel中公式 @Testpublic void testRead() throws Exception {//读取文件的 ...

  8. Java使用POI操作Excel文件

    我们可以使用POI操作Excel文件,本文主要介绍:"导入POI的Maven依赖"."创建Poi对象"."Poi读取Excel工作表数目". ...

  9. Java用poi解析Excel,支持xls/xlsx

    由于JXL不能支持.xlsx的Excel文件,因此采用POI. 这里要用到的Jar包只需要:org.apache.poi 3.15和org.apache.poi-ooxml 3.15 在POI中,解析 ...

最新文章

  1. 《评人工智能如何走向新阶段》后记(再续3)
  2. Python SQLite 用法
  3. 实用Common Lisp编程——函数
  4. 太极发送卡片软件_QQ卡片式消息一键发送app
  5. 神经网络python识别词语_请教关于python的手写数字识别神经网络问题~~~~
  6. Python《爬取手机和桌面壁纸》
  7. 机器学习之特征工程-特征选择
  8. Oracle取同一类别中某属性最大或者最小值的一条
  9. silverlight游戏在坑内发展
  10. panoramio.com
  11. SPSS 简单线性回归(图文+数据集)【SPSS 025期】
  12. java提供两种处理异常的机制_Java的异常机制分析及处理办法
  13. 太牛了,值得收藏!7000字22张图,精讲 Redis 知识!
  14. 台电p10hd拆解_台电X19HD玩家拆机报告
  15. C语言的酒店客房管理系统
  16. CAD打断线条的快捷键是什么?CAD打断线条教程
  17. PG+POSTGIS地图空间位置网格聚合算法
  18. 用python实现纸牌游戏的随机抽牌洗牌过程(item系列几个内置方法的实例)
  19. 记一次网络故障排除:nat虚拟机不能ping外网 浏览器可以上网
  20. 编程语言:C语言网络资源

热门文章

  1. JavaWeb——JSP九大内置对象及作用域详解
  2. 如何在winows的PPT里面使用醒目的思源系列字体(思源宋体/黑体)
  3. 电商数仓描述_笔记-尚硅谷大数据项目数据仓库-电商数仓V1.2新版
  4. HBase系列(六)优化
  5. 超好用的Git工作流
  6. php视频点播系统,PHPvod 视频点播系统 v3.1 for php5.4.x
  7. ASP木马提升权限的N种方法
  8. 类似微信聊天界面加载历史记录的样式
  9. SUMPRODUCT countif
  10. MNIST数据集的导入与预处理