基于Java实现对Excel表格数据的读写(附B站详细讲解视频)

news2024/12/21 23:56:26

文章目录

Maven依赖设置导入相应jar包

读取.xlsx表格文件数据

写入数据到.xlsx表格文件

 读写后缀名为.xls类型的表格文件(旧版表格文件)

 详细视频教程


Maven依赖设置导入相应jar包

<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.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.example</groupId>
  <artifactId>ReadExcel</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>ReadExcel Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.17</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>3.17</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>ReadExcel</finalName>
  </build>
</project>

读取.xlsx表格文件数据

示例:

package Excel;

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 java.io.FileInputStream;
import java.util.Scanner;

public class ReadExcel {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入Excel表格文件的磁盘路径:");
        String str = input.next();
        new ReadExcel().readExcel(str);
    }
    public void  readExcel(String path){
        try{
            //1.建立输入流
            FileInputStream fip = new FileInputStream(path);
            //2.在输入流中获取Excel工作簿
            XSSFWorkbook book = new XSSFWorkbook(fip);
            //3.获取工作簿中要读取的工作表,可以通过工作表的下标(从0开始的)或者工作表的名称来获取
            XSSFSheet sheet = book.getSheetAt(0);
            //XSSFSheet sheet = book.getSheet("Sheet1");
            //读取表头字符串
            XSSFRow rows = sheet.getRow(0);
            String ss1 = rows.getCell(0).getStringCellValue();
            String ss2 = rows.getCell(1).getStringCellValue();
            String ss3 = rows.getCell(2).getStringCellValue();
            System.out.println(ss1+"\t\t"+ss2+"\t\t"+ss3);
            //4.获取工作表中数据的总行数
            int n = sheet.getPhysicalNumberOfRows();
            //5.循环逐行读取,打印输出
            for (int i = 1; i <n ; i++) {
                //读取第i行
                XSSFRow row = sheet.getRow(i);
                //读取第0,1,2列,
                String s1 = row.getCell(0).getStringCellValue();
                String s2 = row.getCell(1).getStringCellValue();
                double s3 = row.getCell(2).getNumericCellValue();
                //打印
                System.out.println(s1+"\t"+s2+"\t\t"+(int)s3);
            }
            //关闭输入流
            fip.close();
        }catch (Exception e){
            System.out.println(e);
        }
    }
}

运行截图:

 注意:

  • 读取时设置接收数据的变量数据类型要和表格中数据的类型要一致,否则类型不匹配会报错

  •  涉及文件流的操作必须要抛出异常,可以写在try代码块内部,或者在方法头处抛出响应异常
  •  当Excel文件单元格内数据为空时,要加以判断,否则会报空指针异常
//第0行
XSSFRow row = sheet.getRow(0);
XSSFCell cell=row.getCell(0);
//判断读取对象是否为空
if(cell==null||row==null){
    cell=row.createCell(0);
}
单元格为空时读取数据报空指针异常


写入数据到.xlsx表格文件

示例:

package Excel;

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

import java.io.FileOutputStream;
import java.util.Scanner;

public class WriteExcel {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入数据存放的磁盘路径:");
        String str = input.next();
        new WriteExcel().writeExcel(str);
    }
    public void writeExcel(String path){
        try{
            //1.建立输出流
            FileOutputStream fop = new FileOutputStream(path);
            //2.创建工作簿
            XSSFWorkbook book = new XSSFWorkbook();
            //3.创建工作表
            XSSFSheet sheet = book.createSheet();
            //4.创建一行
            XSSFRow row = sheet.createRow(0);//第0行,即首行
            //5.创建单元格即相应的列
            row.createCell(0).setCellValue("许红豆");//第0行的第0列
            row.createCell(1).setCellValue("谢之遥");//第0行的第1列
            //6.将工作簿写入到输出流,使得其写入到磁盘文件中去
            book.write(fop);
            //7.关闭输出流
            fop.close();
            System.out.println("写入成功!");
        }catch (Exception e){
            System.out.println("写入失败:"+e);
        }
    }
}

运行截图:


 读写后缀名为.xls类型的表格文件(旧版表格文件)

        .xlsx是新版的表格文件,而.xls是旧版的表格文件,二者读写的原理是一致的,代码相近,只是一些类名称不同,主要在工作簿、工作表、行的定义上有所区别

新版.xlsx

  • 工作簿定义
XSSFWorkbook book = new XSSFWorkbook(fip);
  •  工作表定义
XSSFSheet sheet = book.getSheetAt(0);
  • 行定义
XSSFRow rows = sheet.getRow(0);

旧版.xls

  • 工作簿
HSSFWorkbook book = new HSSFWorkbook (fip);
  • 工作表
Sheet sheet = book.getSheetAt(0);
Row rows = sheet.getRow(0);

 详细视频教程

【学习分享】JAVA如何读写Excel文档https://www.bilibili.com/video/BV1aV411z7ey?p=4&vd_source=857668257512c5571840acab6bd48bf5

 END.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/186009.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文理解【Offline RL】——【One-step】Offline RL Without Off-Policy Evaluation

标题&#xff1a;Offline RL Without Off-Policy Evaluation文章链接&#xff1a;Offline RL Without Off-Policy Evaluation代码&#xff1a;davidbrandfonbrener/onestep-rl发表&#xff1a;NIPS 2021领域&#xff1a;离线强化学习&#xff08;offline/batch RL&#xff09;—…

【深度学习】知识蒸馏原理以及实践从0到1

文章目录前言1、知识蒸馏1.1 是什么&#xff1f;1.2 训练流程1.3 问题与挑战2、落地使用2.1 后续问题&#xff1a;总结前言 有没有什么方法可以在不扩展硬件的情况下利用这些强大但庞大的模型来训练最先进的模型&#xff1f;目前&#xff0c;有三种方法可以压缩神经网络&#…

一文搞懂JDK8 HashMap源码

目录前言常量和变量构造器put方法resize扩容get方法前言 HashMap的源码非常经典&#xff0c;里面用到了哈希表、链表、红黑树等数据结构&#xff0c;而且又是用纯Java实现的&#xff0c;所以成为了Java程序员必读的源码之一。 事先了解下哈希表&#xff08;散列表&#xff09…

portraiture2023手动磨皮的p图插件

可以手动磨皮的p图软件&#xff0c;大部分美颜软件只能一键磨皮或简单调整磨皮强度&#xff0c;本文会介绍一款可自动、可手动磨皮的p图软件。人像p图软件哪个好用&#xff1f;本文还会盘点一下好用的人像p图软件。 portraiture2023功能特点 2x性能和精细的输出质量将您的皮肤…

AES加密算法

AES算法原理 对称加密算法&#xff08;用于取代DES算法&#xff0c;发展历史DES-3DES-AES&#xff09; 明文长度固定为128位&#xff08;DES&#xff1a;64位&#xff09;&#xff0c;密钥长度可128位、192位、256位&#xff08;DES&#xff1a;64位&#xff09; 加密原理 …

你是如何对待植物神经紊乱的?

大家好&#xff0c;你们是如何对待植物神经紊乱这种疾病的&#xff1f; 你们知道吗&#xff1f;植物神经紊乱是一种情绪情志障碍伴躯体化症状的特殊且复杂的疾病&#xff0c;这种疾病可能会导致浑身的不适。 并且&#xff0c;很多植物神经紊乱的患者发现&#xff0c;这种疾病是…

【GD32F427开发板试用】硬件SPI通信驱动CH376芯片,用单片机实现U盘数据下载

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;周文杰 SPI通信作为单片机多种基础数据传输模式中的一种&#xff0c;驱动外部芯片CH376实现数据导出到U盘功能在实际工程项目中是很方便的。本…

字符设备驱动之mmap、select

一、mmap mmap&#xff0c;简而言之就是将内核空间的一段内存区域映射到用户空间。映射成功后&#xff0c;用户对这段内存区域的修改可以直接反映到内核空间&#xff0c;相反&#xff0c;内核空间对这段区域的修改也直接反映用户空间。那么对于内核空间与用户空间两者之…

Prometheus + Grafana + Alertmanager 本地安装调试

一、简介 Prometheus 是一款强大的监控软件&#xff0c;一般会与Grafana和Alertmanager一起配合使用&#xff0c;而且多用于k8s集群。简介的话网上很多&#xff0c;官网 更是详细&#xff0c;这里就不班门弄斧了。k8s集群环境下的安装网上很多&#xff0c;但是k8s集群搭建时间…

【实际开发10】- 远程调用 ( Feign )

目录 1. Feign 调用注意事项 - ★★★ 1. 【原则】: 禁止遍历 - 多次跨服务调用接口 ( 提需求 : idList ) 1. 单一数据查询 , 可直接用 Feign单一查询接口 2. List数据查询 , 需进行 Feign 数据转换 , 禁止遍历 Feign 3. stream() : 从List<对象> , 取出 id 和 name…

关于PS VR2和独占,开发者和分析师都怎么看

近期&#xff0c;索尼正式宣布了PS VR2首发游戏列表&#xff0c;共计37款游戏&#xff0c;其中包括备受关注的IP大作《地平线&#xff1a;山之召唤》等。从这37款首发阵容中可以看到一个现象&#xff0c;大部分游戏是非新作&#xff0c;而是已经在PS VR1或其它VR平台上线&#…

C++基础——C++数组

C基础——C数组C 数组声明数组初始化数组访问数组元素C 中数组详解C 数组 C 支持数组数据结构&#xff0c;它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据&#xff0c;但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的…

【数据结构基础】线性表 - 链表

n个节点离散分配&#xff0c;彼此通过指针相连&#xff0c;每个节点只有一个前驱节点&#xff0c;每个节点只有一个后续节点&#xff0c;首节点没有前驱节点&#xff0c;尾节点没有后续节点。确定一个链表我们只需要头指针&#xff0c;通过头指针就可以把整个链表都能推出来。知…

设计模式-UML图

目录 2&#xff0c;UML图 2.1 类图概述 2.2 类图的作用 2.3 类图表示法 2.3.1 类的表示方式 2.3.2 类与类之间关系的表示方式 2&#xff0c;UML图 统一建模语言&#xff08;Unified Modeling Language&#xff0c;UML&#xff09;是用来设计软件的可视化建模语言。它的特…

Matlab pdetool

云溪岩绵迎彩霞,博主精神压力大呀,没人说说知心话啊,SCU物理要命啦........基本物理方程静电磁场交流电磁场热传导Options->ApplicationGeneric Scalar泛型标量Generic System通用系统Structural Mechanics,Plane Stress结构力学 - 平面应力Structural Mechanics,Plane Stra…

Flashback Oracle文档阅读

和Flashback相关的文档大多位于备份和恢复用户指南 和Oracle 数据库开发指南中。 基本概念 请参看备份和恢复用户指南的1.4 About Oracle Flashback Technology。 Oracle Flashback Technology的定义&#xff1a; A set of Oracle Database features that provide an additi…

Verilog HDL门级建模

⭐本专栏针对FPGA进行入门学习&#xff0c;从数电中常见的逻辑代数讲起&#xff0c;结合Verilog HDL语言学习与仿真&#xff0c;主要对组合逻辑电路与时序逻辑电路进行分析与设计&#xff0c;对状态机FSM进行剖析与建模。 &#x1f525;文章和代码已归档至【Github仓库&#xf…

数字电路设计:Logicly 最新版Crack

Logicly有效地教授逻辑门 数字电路 — 使用 Logicly 现代直观的用户界面支持拖放、复制/粘贴、缩放等功能&#xff0c;可快速轻松地设计电路。 通过暂停模拟并在您逐步推进时观察信号传播来控制调试。 不用担心学生计算机上的多个平台。在 Windows 和 macOS 上安装 创建引人入…

子查询-MySQL

文章目录理解举例基本使用语法分类分类方式1单行子查询多行子查询分类方式2&#xff1a;单行子查询单行比较操作符代码示例HAVING 中的子查询CASE中的子查询子查询中的空值问题非法使用子查询多行子查询多行比较操作符代码示例相关子查询相关子查询执行流程代码示例EXISTS 与 N…

USART学习笔记

目录 1. USART框图 2. 传输帧图 3. 配置步骤 4.配置编码&#xff08;使用库函数&#xff09; 5. 函数调用缩略图 1. USART框图 2. 传输帧图 起始位的特征&#xff1a;时钟引脚CK处于低电平&#xff0c;TX引脚处于低电平&#xff0c;持续1个SCLK长度&#xff08;位长度&…