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

【Java】POI解析excel

一、相关介绍

POI技术

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

poi-ooxml能解析xls,xlsx。

poi能解析word、ppt、excel、xml等office软件

导入坐标:

<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> 
</dependency>

二、使用案例

通过Poi操作Excel十分方便:

使用 WorkbookFactory类 的create()方法解析出excel所有数据

将一个Excel抽象为一个Workbook:

sheets 对象中保存了excel中所有的数据

一个表单页抽象为Sheet,表单中的一行抽象为Row,一行中的一个单元格可以抽象为Cell。

HSSFWorkbook对应的是97-03格式(.xls)
XSSFWorkbook对应的是07格式的(.xlsx)

Workbook的获取——可以通过WorkbookFactory

根据传入excel文件的类型来调用不同的实现类(子类):

WorkbookFactory——创建Workbook;

1、读:

//Excel 解析 去读 写入 poi esaypoi1、输入流加载excel文件
2、使用POI解析excel—— Workbook sheets = WorkbookFactory.create(fis)———— sheets 对象中保存了excel中所有的数据
3、获取指定sheet ———— Sheet sheet = sheets.getSheetAt(0)———— getSheetAt——根据索引索取
4、获取所有row  ————  Row row = sheet.getRow(3);//获取第四行
5、获取所有cell ————— Cell cell = row.getCell(1);//获取第二列//getCell重载的方法【丢失单元格策略】:如果cell不是空,不做任何事;//如果单元格是空的,默认返回一个null,则new一个Cell()返回 保证不会报空指针Cell cell = row.getCell(j, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);6、获取所有cell中的内容———— cell.getStringCellValue()cell.setCellType(CellType.STRING);//强行把cell的类型设置为String//防止报错:Cannot get a STRING value from a NUMERIC cell

2、写——回写 修改

回写——基于最大的sheets对象来回写 因为sheet、row、cell可能都有改动
回写可以写到已经有的文件或者不存在的文件:

如果是已经存在的文件,那么会清空再写进去,有风险
如果是不存在的文件,那么会新建
如果文件已经打开,那么写不进去

public class WriteExcel {public static void main(String[] args) throws Exception {//2、修改excel//2.1创建流FileInputStream fis2 = new FileInputStream("src/test/resources/例子.xlsx");//2.2使用POI解析excelWorkbook sheets = WorkbookFactory.create(fis2);fis2.close();//2.3 获取指定sheetSheet sheet2 = sheets.getSheetAt(0);//2.4 获取指定rowRow row2 = sheet2.getRow(3);//2.5 获取指定cellCell cell2 = row2.getCell(1);//2.6 修改cell内容cell2.setCellValue("我安撕家");/*其实是把内容都拿到放在sheets里面,修改一个,再写进去,相当于删除掉重新写入*/FileOutputStream fos2 = new FileOutputStream("src/test/resources/例子回写.xlsx");sheets.write(fos2);}
}

3、写——创建

public class CreateExcelLearn {
//创建excel
0、在盘下创建一个文件夹
1、定义工作薄,创建HSSFWorkbook对象(excel的文档对象)
2、创建输出流
3、建立新的sheet对象(excel的表单)Sheet sheet = sheets.createSheet(sheet名称);
//        Row row = sheet.createRow(0);
//        Cell cell = row.createCell(0);
//        cell.setCellValue("具体要填写的内容");
4、将workbook写入流
5、关流public static void main(String[] args) throws Exception {
/*
在盘下创建一个文件夹
*/String directory = "/Users..";File file = new File(directory);  // 创建文件夹对象if (!file.exists()) {// 如果不存在就创建file.mkdirs();}//HSSFWorkbook implements Workbook//1、定义工作薄,创建HSSFWorkbook对象(excel的文档对象)Workbook wb = new HSSFWorkbook();//2、创建输出流FileOutputStream fileout = new FileOutputStream("/Users/..创建.xls");// 3、建立新的sheet对象(excel的表单)Sheet sheet = wb.createSheet("Sheet页1");// 定义sheet页面// 4、在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一Row row = sheet.createRow(0);// 创建第一行Cell cell = row.createCell(0);// 创建一个单元格,第一列。cell.setCellValue("cy的第一行第一列");//设置值//5、设置第一行 第二列为3row.createCell(1).setCellValue(3);wb.createSheet("Sheet页2");// 定义sheet页面// 6、将workbook写入流wb.write(fileout);// 7、关闭输出流fileout.close();}

相关文章:

【Java】POI解析excel

一、相关介绍 POI技术 Apache POI是Apache软件基金会的开放源码函式库&#xff0c;POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 poi-ooxml能解析xls&#xff0c;xlsx。 poi能解析word、ppt、excel、xml等office软件 导入坐标&#xff1a; <depende…...

AI浸入社交领域,泛娱乐APP如何抓住新风口?

2023年是大模型技术蓬勃发展的一年&#xff0c;自ChatGPT以惊艳姿态亮相以来&#xff0c;同年年底多模态大模型技术在国内及全球范围内的全面爆发&#xff0c;即模型能够理解并生成包括文本、图像、视频、音频等多种类型的内容。例如&#xff0c;基于大模型的文本到图像生成工具…...

遥感图像地物分类流程

遥感图像地物分类流程 1. 制作标签 使用arcgis pro或者arcgis或者envi&#xff0c;画标签&#xff0c;保存为tiff格式 2. 处理标签数据 用python gdal库安装 osgdal库&#xff0c;如果安装失败就需要下载 对应库得 .whl去安装&#xff0c;网站具体搞忘了&#xff0c;可以百…...

JS13-事件的绑定和事件对象Event

绑定事件的两种方式/DOM事件的级别 DOM0的写法&#xff1a;onclick element.onclick function () {}举例&#xff1a; <body> <button>点我</button> <script>var btn document.getElementsByTagName("button")[0];//这种事件绑定的方式…...

pycorrector检测OCR错字实践

参考&#xff1a;https://github.com/shibing624/pycorrector/tree/master/examples/macbert stopwords.txt 添加专业停用词&#xff0c;避免错误 设置自定义词典&#xff0c;避免将正确的词错误检测成错误的词 from pycorrector import Corrector m Corrector() m.set_cus…...

RDD算子介绍(三)

1. join 将相同的key的值连接在一起&#xff0c;值的类型可以不同 val rdd1 : RDD[(String, Int)] sc.makeRDD(List(("a", 1), ("b", 2), ("c", 3))) val rdd2 : RDD[(String, Int)] sc.makeRDD(List(("a", 4), ("b", 5…...

Redis的脑裂问题

Redis 脑裂&#xff08;Split-brain&#xff09;问题是指在分布式系统中&#xff0c;特别是基于主从复制和哨兵&#xff08;Sentinel&#xff09;模式的Redis集群中&#xff0c;由于网络分区&#xff08;network partition&#xff09;而导致部分节点组成了独立可用的服务&…...

【算法】雪花算法生成分布式 ID

SueWakeup 个人中心&#xff1a;SueWakeup 系列专栏&#xff1a;学习Java框架 个性签名&#xff1a;人生乏味啊&#xff0c;我欲令之光怪陆离 本文封面由 凯楠&#x1f4f7; 友情赞助播出! 目录 1. 什么是分布式 ID 2. 分布式 ID 基本要求 3. 数据库主键自增 4. UUID 5. S…...

FFplay使用滤镜添加字幕到现有视频显示

1.创建字幕文件4k.srt 4k.srt内容: 1 00:00:01.000 --> 00:00:30.000 日照香炉生紫烟2 00:00:31.000 --> 00:00:60.000 遥看瀑布挂前川3 00:01:01.000 --> 00:01:30.000 飞流直下三千尺4 00:01:31.000 --> 00:02:00.000 疑是银河落九天2.通过使用滤镜显示字幕在视…...

【Python + Django】Django模板语法 + 请求和响应

前言&#xff1a; 现在现在&#xff0c;我们要开始将变量的值展现在页面上面啦&#xff01; 要是只会显示静态页面&#xff0c;我们的页面也太难看和死板了&#xff0c; 并且数据库的数据也没法展现在页面上。 但是呢&#xff0c;模板语法学习之后就可以啦&#xff01;&…...

大数据面试总结 四

1、当hadoop集群中某一个节点挂了&#xff0c;内部数据流程是如何进行的&#xff1f; 每一个datanode都会定期向namenode发送heardbeat消息&#xff0c;当一段时间namenode没有接收到某一个datanode的消息&#xff0c;此时namenode就会将该datanode标记为死亡&#xff0c;并不…...

Spring Boot: 使用MongoOperations操作mongodb

一、添加依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4…...

PyTorch 深度学习(GPT 重译)(六)

十四、端到端结节分析&#xff0c;以及接下来的步骤 本章内容包括 连接分割和分类模型 为新任务微调网络 将直方图和其他指标类型添加到 TensorBoard 从过拟合到泛化 在过去的几章中&#xff0c;我们已经构建了许多对我们的项目至关重要的系统。我们开始加载数据&#xf…...

MyBatis3源码深度解析(十七)MyBatis缓存(一)一级缓存和二级缓存的实现原理

文章目录 前言第六章 MyBatis缓存6.1 MyBatis缓存实现类6.2 MyBatis一级缓存实现原理6.2.1 一级缓存在查询时的使用6.2.2 一级缓存在更新时的清空 6.3 MyBatis二级缓存的实现原理6.3.1 实现的二级缓存的Executor类型6.3.2 二级缓存在查询时使用6.3.3 二级缓存在更新时清空 前言…...

Go --- Go语言垃圾处理

概念 垃圾回收&#xff08;GC-Garbage Collection&#xff09;暂停程序业务逻辑SWT&#xff08;stop the world&#xff09;程序根节点&#xff1a;程序中被直接或间接引用的对象集合&#xff0c;能通过他们找出所有可以被访问到的对象&#xff0c;所以Go程序的根节点通常包括…...

力扣每日一题30:串联所有单词的子串

题目描述 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如&#xff0c;如果 words ["ab","cd","ef"]&#xff0c; 那么 &q…...

vim | vim的快捷命令行

快捷进入shell界面 -> :nnoremap <F8> :sh<CR> -> 绑定到了F8 :nnoremap <F8> :sh<CR> 快捷执行 -> :nnoremap <F5> :wa<CR>:!g % -o a.out && ./a.out<CR> -> 绑定到了F5 :nnoremap <F5> :wa<CR>…...

项目管理平台-01-BugClose 入门介绍

拓展阅读 Devops-01-devops 是什么&#xff1f; Devops-02-Jpom 简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件 代码质量管理 SonarQube-01-入门介绍 项目管理平台-01-jira 入门介绍 缺陷跟踪管理系统&#xff0c;为针对缺陷管理、任务追踪和项目管理的商业…...

web集群-lvs-DR模式基本配置

目录 环境&#xff1a; 一、配置RS 1、安装常见软件 2、配置web服务 3、添加vip 4、arp抑制 二、配置LVS 1、添加vip 2、安装配置工具 3、配置DR 三、测试 四、脚本方式配置 1、LVS-DR 2、LVS-RS 环境&#xff1a; master lvs 192.168.80.161 no…...

基于深度学习的面部情绪识别算法仿真与分析

声明&#xff1a;以下内容均属于本人本科论文内容&#xff0c;禁止盗用&#xff0c;否则将追究相关责任 基于深度学习的面部情绪识别算法仿真与分析 摘要结果分析1、本次设计通过网络爬虫技术获取了七种面部情绪图片&#xff1a;吃惊、恐惧、厌恶、高兴、伤心、愤怒、自然各若…...

软件冲刺待办列表管理化的任务管理

在快节奏的软件开发中&#xff0c;高效的任务管理是团队成功的关键。软件冲刺待办列表管理化的任务管理&#xff0c;正是为了解决这一痛点而生。它将敏捷开发中的冲刺&#xff08;Sprint&#xff09;与待办列表&#xff08;Backlog&#xff09;相结合&#xff0c;帮助团队清晰规…...

为什么你的AGI在沙盒里完美,在现实世界中失控?揭开跨模态一致性验证的3重隐性失效机制

第一章&#xff1a;AGI的测试与验证方法 2026奇点智能技术大会(https://ml-summit.org) 通用人工智能&#xff08;AGI&#xff09;的测试与验证远超传统AI系统的评估范式&#xff0c;其核心挑战在于系统需在开放域、跨任务、自适应推理与价值对齐等多维能力上同时满足鲁棒性、…...

浦语灵笔2.5-7B应用场景:跨境电商卖家上传商品图→多语言描述生成

浦语灵笔2.5-7B应用场景&#xff1a;跨境电商卖家上传商品图→多语言描述生成 1. 引言&#xff1a;跨境电商卖家的“描述”之痛 如果你是做跨境电商的卖家&#xff0c;每天最头疼的事情是什么&#xff1f;不是选品&#xff0c;不是物流&#xff0c;而是给商品写描述。 想象一…...

别再搞混了!LP/mm、Cycles/pixel这些分辨率单位到底怎么用?附换算表

分辨率单位全解析&#xff1a;从LP/mm到Cycles/pixel的实战指南 每次看到镜头参数表里那些LP/mm、Cycles/pixel之类的术语&#xff0c;是不是感觉像在读天书&#xff1f;上周我帮朋友选工业相机时&#xff0c;发现不同厂商用不同单位标注分辨率&#xff0c;结果差点买错设备。今…...

解锁BT下载速度瓶颈:92个公共Tracker节点让你的下载体验飞升

解锁BT下载速度瓶颈&#xff1a;92个公共Tracker节点让你的下载体验飞升 【免费下载链接】trackerslist Updated list of public BitTorrent trackers 项目地址: https://gitcode.com/GitHub_Trending/tr/trackerslist 还在为BT下载速度慢、种子健康度低而烦恼吗&#x…...

从Kaggle竞赛到工业部署:语义分割指标mIoU、Dice Score到底该怎么选?

从Kaggle竞赛到工业部署&#xff1a;语义分割指标mIoU、Dice Score到底该怎么选&#xff1f; 在计算机视觉领域&#xff0c;语义分割技术的应用场景正变得越来越广泛。无论是Kaggle竞赛中的算法比拼&#xff0c;还是自动驾驶、医疗影像分析等工业级应用&#xff0c;选择合适的评…...

智能代码生成覆盖率陷阱全解析,资深SRE亲授覆盖率验证三重校验法与CI/CD嵌入指南

第一章&#xff1a;智能代码生成代码覆盖率分析 2026奇点智能技术大会(https://ml-summit.org) 现代智能代码生成系统&#xff08;如Copilot、CodeWhisperer、Tabnine&#xff09;在提升开发效率的同时&#xff0c;其输出代码的可测试性与结构完整性正成为质量保障的关键挑战…...

STM32项目交付新姿势:用CoFlash把.bin/.elf文件甩给客户,告别源码工程

STM32项目交付新姿势&#xff1a;用CoFlash实现二进制文件的安全传递 在嵌入式开发领域&#xff0c;知识产权保护与高效协作往往是一对难以调和的矛盾。传统开发模式下&#xff0c;工程师不得不将完整的Keil或CubeIDE工程源码打包交付给客户或生产部门&#xff0c;这不仅暴露了…...

SVN Update 冲突解决全攻略:从选项解析到实战决策

1. 当SVN Update遇到冲突时该怎么办&#xff1f; 第一次看到SVN update冲突提示时&#xff0c;我整个人都是懵的。屏幕上突然跳出一堆选项&#xff1a;p、df、e、mc、tc...这简直就像在玩解谜游戏。作为一个过来人&#xff0c;我完全理解这种手足无措的感觉。但别担心&#xf…...

终极指南:用Chinese-ERJ LaTeX模板轻松搞定经济研究期刊论文排版

终极指南&#xff1a;用Chinese-ERJ LaTeX模板轻松搞定经济研究期刊论文排版 【免费下载链接】Chinese-ERJ 《经济研究》杂志 LaTeX 论文模板 - LaTeX Template for Economic Research Journal 项目地址: https://gitcode.com/gh_mirrors/ch/Chinese-ERJ 还在为《经济研…...