一、需要导入的jar

1.commons-collections4-4.1.jar

2.poi-3.17-beta1.jar

3.poi-ooxml-3.17-beta1.jar

4.poi-ooxml-schemas-3.17-beta1.jar

5.xmlbeans-2.6.0.jar

二、主要API,了解springcloud架构可以加求求:三五三六二四七二五九

1.import org.apache.poi.ss.usermodel.Workbook,对应Excel文档;

2.import org.apache.poi.hssf.usermodel.HSSFWorkbook,对应xls格式的Excel文档;

3.import org.apache.poi.xssf.usermodel.XSSFWorkbook,对应xlsx格式的Excel文档;

4.import org.apache.poi.ss.usermodel.Sheet,对应Excel文档中的一个sheet;

5.import org.apache.poi.ss.usermodel.Row,对应一个sheet中的一行;

6.import org.apache.poi.ss.usermodel.Cell,对应一个单元格。

三、代码如下package poi;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.LinkedHashMap;

import java.util.List;

import java.util.Map;

import java.util.Map.Entry;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.ss.usermodel.DateUtil;

import org.apache.poi.ss.usermodel.Row;

import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.ss.usermodel.Workbook;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Testpoi {

public static void main(String[] args) {

Workbook wb =null;

Sheet sheet = null;

Row row = null;

List> list = null;

String cellData = null;

String filePath = "D:\\test.xlsx";

String columns[] = {"name","age","score"};

wb = readExcel(filePath);

if(wb != null){

//用来存放表中数据

list = new ArrayList>();

//获取第一个sheet

sheet = wb.getSheetAt(0);

//获取最大行数

int rownum = sheet.getPhysicalNumberOfRows();

//获取第一行

row = sheet.getRow(0);

//获取最大列数

int colnum = row.getPhysicalNumberOfCells();

for (int i = 1; i

Map map = new LinkedHashMap();

row = sheet.getRow(i);

if(row !=null){

for (int j=0;j

cellData = (String) getCellFormatValue(row.getCell(j));

map.put(columns[j], cellData);

}

}else{

break;

}

list.add(map);

}

}

//遍历解析出来的list

for (Map map : list) {

for (Entry entry : map.entrySet()) {

System.out.print(entry.getKey()+":"+entry.getValue()+",");

}

System.out.println();

}

}

//读取excel

public static Workbook readExcel(String filePath){

Workbook wb = null;

if(filePath==null){

return null;

}

String extString = filePath.substring(filePath.lastIndexOf("."));

InputStream is = null;

try {

is = new FileInputStream(filePath);

if(".xls".equals(extString)){

return wb = new HSSFWorkbook(is);

}else if(".xlsx".equals(extString)){

return wb = new XSSFWorkbook(is);

}else{

return wb = null;

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return wb;

}

public static Object getCellFormatValue(Cell cell){

Object cellValue = null;

if(cell!=null){

//判断cell类型

switch(cell.getCellType()){

case Cell.CELL_TYPE_NUMERIC:{

cellValue = String.valueOf(cell.getNumericCellValue());

break;

}

case Cell.CELL_TYPE_FORMULA:{

//判断cell是否为日期格式

if(DateUtil.isCellDateFormatted(cell)){

//转换为日期格式YYYY-mm-dd

cellValue = cell.getDateCellValue();

}else{

//数字

cellValue = String.valueOf(cell.getNumericCellValue());

}

break;

}

case Cell.CELL_TYPE_STRING:{

cellValue = cell.getRichStringCellValue().getString();

break;

}

default:

cellValue = "";

}

}else{

cellValue = "";

}

return cellValue;

}

}

四、运行结果

代码运行前保证在D盘下有一个test.xlsx文档,不然报文件找不到异常;Excel文档中的表头要和代码中的String columns[] = {"name","age","score"}对应起来。

java excel解析视频教程_java解析Excel(xls、xlsx两种格式)相关推荐

  1. java excel api xlsx_Java 解析Excel(xls、xlsx两种格式)

    Java 解析Excel(xls.xlsx两种格式) 一.环境 JDK 1.8 二.JAR 1.commons-collections4-4.1.jar 2.poi-3.9-20121203.jar ...

  2. Java 解析Excel(xls、xlsx两种格式)

    Java 解析Excel(xls.xlsx两种格式) 一.环境 JDK 1.8 二.JAR 1.commons-collections4-4.1.jar 2.poi-3.9-20121203.jar ...

  3. Java使用poi导出数据到excel(包括xls和xlsx两种格式)并通过浏览器下载

    情景:将数据导出到excel是java开发常用的功能,数据量不大的时候,xls和xlsx两种格式的文件都行,但是数据量太大的时候就有区别了,xls格式的文件一个sheet页最多只能存六万多条数据,而x ...

  4. Python 不改变Excel单元格样式—xls和xlsx两种格式

    因为xls和xlsx两种格式,xlsx是被加密了传统的方式读取修改不了 下面是xls格式读取修改 # -*- coding: utf-8 -*-# # ------------------------ ...

  5. java swing事件机制_java SWing事件调用的两种机制

    /** * java swing中事件调用的两种机制: * (一)响应机制 * (二)回调机制 */ package test; import java.awt.*; import java.awt. ...

  6. java hashmap遍历顺序_Java中HashMap遍历的两种方式

    第一种: Map map =  HashMap(); Iterator iter = map.entrySet().iterator(); (iter.hasNext()) { Map.Entry e ...

  7. excel 解析 java_java解析Excel(xls、xlsx两种格式)

    https://www.cnblogs.com/hhhshct/p/7255915.html ***************************************************** ...

  8. java获取文件后缀_Java获取文件后缀的两种方式

    在对文件进行操作的时候,我们经常需要用到文件的后缀.但是Java API中并没有提供获取文件后缀的方法.下面的工具方法可以帮助我们实现这个目的. 方法1 代码示例: package org.4spac ...

  9. java 图片 白边_java 去除图片白边 两种方法的比较

    swt 下的图片处理: ImageData ideaImageData = new ImageData(path); ideaImageData = getWhite(ideaImageData); ...

最新文章

  1. JAVA 静态变量与静态方法
  2. bat no moudle named xxx
  3. RIS镜像中添加网卡和RAID卡驱动方法及实践经验总结
  4. matlab波的极化特性,Matlab GUI在电磁波极化特性教学中的应用
  5. K8S configmap详解:从文件创建、从文件夹创建及以volume、env环境变量的方式在pod中使用
  6. rundll32的使用和使用c#调用dll
  7. 【华为云技术分享】《跟唐老师学习云网络》 - Veth网线
  8. EXP-00056遇到Oracle错误1455问题解决办法
  9. 一些关于java的笔记
  10. mysql 优化 整体思路
  11. 车型代号对照表_宝马内部代号对应车型解读,绝密!
  12. python网页登录验证码_15.Python实现识别登录验证码(入门)
  13. 百人计划(图形部分)Bump Mapping(凹凸贴图映射技术)
  14. 魔方——一面两层之后的公式
  15. 华为网络设备与基础配置
  16. android开机加速器,安卓手机开机如何加速
  17. 看不到同一个网络下的其他计算机,看不到局域网其他计算机怎么办
  18. C语言哈夫曼编码压缩解压
  19. AI美颜SDK功能算法代码解析
  20. word-spacing无效

热门文章

  1. 注册窗口类 registerclass
  2. 远程控制漏洞CNVD-2022-10270/CNVD-2022-03672 向日葵RCE复现与解决
  3. python3 join函数_Python3 join函数和os.path.join用法详解
  4. java类向拦截器传值_MyBatis拦截器:给参数对象属性赋值的实例
  5. python中什么是实例-在Python中使用’__rsub__’方法的典型实例是什么?
  6. .net函数查询_特来电智能分析平台动态查询架构创新实践
  7. 学生电脑哪个牌子好_常亮补光灯哪个牌子好服务至上
  8. Android开发之Java基础JVM和ClassLoader以及类加机制面试题
  9. 让线程等待10秒_把python程序变成多线程
  10. QXTEND QUERY SERVICE调试成功