当前位置: 首页 > news >正文

java poi excel 图表_Java使用POI解析Excel表格

概述

Excel表格是常用的数据存储工具,项目中经常会遇到导入Excel和导出Excel的功能。

常见的Excel格式有xls和xlsx。07版本以后主要以基于XML的压缩格式作为默认文件格式xlsx。新格式主要是使用了OpenXML标准,结合了XML与Zip压缩技术。在这里就不细说,感兴趣的读者可以自行去查找相关知识。本文将重点以这两种文件格式的解析来展开。

Excel主要有以下部分组成:

一个Excel相当于一个工作簿(WorkBook);

每个sheet相当于一张表格;

sheet里面又由单元格Cell组成;

操作Excel的方式

Java提供了操作Excel的api JXL(Java Excel API),但是JXL只支持07版本以前,也就是xls后缀的Excel。因此使用中通常使用apache的POI

maven中的POI依赖

org.apache.poi

poi

4.0.1

org.apache.poi

poi-ooxml

4.0.1

其中最顶层接口Workbook;主要有三个实现类XSSFWorkbook、HSSFWorkbook、SXSSFWorkbook。

XSSFWorkbook

XSSFWorkbook主要用于解析xlsx。

@Test

public void testXlsx(){

File file = new File("C:\\Users\\Administrator\\Desktop\\pdf\\test.xlsx");

if(!file.exists()){

System.out.println("文件不存在");

return ;

}

FileInputStream fis = null;

Workbook workBook = null;

try {

fis = new FileInputStream(file);

workBook = new XSSFWorkbook(fis); // 使用XSSFWorkbook

dealWorkBook(workBook); // 将代码封装复用,见下一个方法

} catch (Exception e) {

e.printStackTrace();

} finally{ //关流

if(fis != null) {

try {

fis.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if(workBook != null){

try {

workBook.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

public void dealWorkBook(Workbook workBook){

Sheet sheet = workBook.getSheetAt(0); // 获取第一个sheet

Map> map = new HashMap>(); //第一个参数表示行数 第二个List保存该行的cell数据

int i = 0;

for(Row row : sheet){

map.put(i, new ArrayList());

for(Cell cell : row){ // 遍历当前行的所有cell

switch(cell.getCellType()) {

case STRING:

map.get(i).add(cell.getRichStringCellValue().getString()); // 如果是字符串则保存

break;

case _NONE:

break;

case NUMERIC:

map.get(i).add(cell.getNumericCellValue()+""); //将数值转换为字符串

break;

case BOOLEAN:

break;

case FORMULA:

break;

case BLANK:

break;

case ERROR:

break;

}

}

i++;

}

Set keys = map.keySet(); // 以下为遍历 Map看解析结果

Iterator it = keys.iterator();

while(it.hasNext()){

List list = map.get(it.next());

for(String s : list){

System.out.print(s+" ");

}

System.out.println();

}

}

运行结果如下

1.0 2.0 3.0 4.0

a b c d

7.0 8.0 9.0 10.0

e f g h

HSSFWorkbook

HSSFWorkbook主要用于解析xls

代码如下

@Test

public void testXls() throws Exception{

File file = new File("D:\\excelTest\\test2.xls");

if(!file.exists()){

System.out.println("文件不存在");

return ;

}

FileInputStream fis = new FileInputStream(file);

Workbook workBook = new HSSFWorkbook(fis, true); // 使用HSSFWorkbook 构造函数略有不同 true表示转化成为Nodes

dealWorkBook(workBook); // 复用上面的方法

workBook.close();

fis.close();

}

解析结果如下

1.0 2.0 3.0 4.0

a b c d

7.0 8.0 9.0 10.0

e f g h

11.0 12.0 13.0 14.0

本文参考了https://blog.csdn.net/holmofy/article/details/82532311

相关文章:

  • java xml 查询_JAVA操作XML的完整例子(查询、增加、修改、删除)
  • labview和python脚本_通过python节点将字典从LabVIEW传递到python脚本
  • mysql克隆master_MySQL复制(二)Master-Slave复制实践
  • java map 平均值_使用Java 8获取两个HashMap的平均值
  • python中给出一个不超过10的正整数n_大学python题 求大佬解答!!!
  • docker建多个mysql_在Linux下使用Docker-compose建立多个数据库
  • 平安科技java在线考试_都有哪些开源的在线考试系统?
  • java clone性能比较_Java深度拷贝方式和性能对比
  • 老黄历java_基于聚合数据的老黄历接口调用示例-JAVA版
  • java properties api_【001】java中配置文件properties的操作
  • java 获取代码line_linedemo.java
  • java spring 加载顺序_java编程之如何控制springboot中bean的加载顺序
  • java注册用户信息_界面设计之注册用户信息
  • java 解析der文件_[Java]读取文件方法大全
  • java中成员变量的分类_Java基础—变量分类、类与对象
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • Map集合、散列表、红黑树介绍
  • MySQL用户中的%到底包不包括localhost?
  • node入门
  • Redux系列x:源码分析
  • socket.io+express实现聊天室的思考(三)
  • vuex 笔记整理
  • 机器学习 vs. 深度学习
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 思考 CSS 架构
  • 算法-插入排序
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • ionic异常记录
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ‌内网穿透技术‌总结
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $(selector).each()和$.each()的区别
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (33)STM32——485实验笔记
  • (C)一些题4
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (函数)颠倒字符串顺序(C语言)
  • (利用IDEA+Maven)定制属于自己的jar包
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (算法)Travel Information Center
  • (一)Neo4j下载安装以及初次使用
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • .jks文件(JAVA KeyStore)
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net core docker部署教程和细节问题
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法