前言
提示:这里可以添加本文要记录的大概内容:
在学习Java中难免会有对文件的读写操作,像word文档、pdf文件以及excel表。这些读写操作都大差不差,接下来为大家讲解一下Java对excel表的读写操作。
提示:以下是本篇文章正文内容,下面案例可供参考
一、EasyExcel是什么?
EasyExcel是阿里巴巴开源的一款基于Java语言的简单、高效、功能强大的Excel读写工具库。它提供了简单易用的API,可以帮助Java开发者在项目中轻松地进行Excel文件的读写操作,支持读取和写入Excel文件,同时支持常见的Excel格式,如.xls和.xlsx。
EasyExcel具有以下主要特点:
- 简单易用:EasyExcel提供了简洁清晰的API,使得开发者可以轻松地进行Excel文件的读写操作,无需过多的复杂配置。
- 高效性能:EasyExcel采用了基于流的方式进行Excel文件的读写,同时使用了缓冲区等技术来提升读写效率,具有较高的性能。
- 功能强大:EasyExcel支持对Excel文件进行灵活的读写操作,可以读取Excel文件中的数据并转换为Java对象,也可以将Java对象的数据写入到Excel文件中。
- 跨平台兼容性:EasyExcel是基于Java语言开发的,可以在各种操作系统上运行,且支持读写各种常见的Excel格式,如.xls和.xlsx等。
- 可扩展性:EasyExcel提供了丰富的扩展点和接口,开发者可以根据自己的需求进行定制和扩展,满足不同场景下的需求。
总的来说,EasyExcel是一款功能强大且易于使用的Java Excel处理工具库,被广泛应用于各种Java项目中,特别是对Excel文件读写操作比较频繁的业务场景。
官方文档地址EasyExcel
二、使用步骤
1.引入库
我们创建maven项目,在pom.xml文件中添加依赖:
<!--easy excel依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.4</version>
</dependency>
<!--lombok依赖 用来生成getter/setter/构造函数的-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>
2.创建实体类
代码如下(示例):
@Data //提供getter/setter
@NoArgsConstructor //无参构造
@AllArgsConstructor //含有全部参数的构造
public class Goods {
@ExcelIgnore //easyexcel注解 表示读写excel表忽略此列
int id;
@ExcelProperty("编码") //easyexcel注解 表示读写excel表对列名为“编码”进行读写
String code;
@ExcelProperty("名称")
String name;
@ExcelProperty("价格")
double price;
@ExcelProperty("库存")
int num;
@ExcelProperty("重量")
double weight;
@ExcelProperty("cpu")
String cpu;
@ExcelProperty("内存")
String memory;
@ExcelProperty("机身内存")
String bodyMemory;
@ExcelIgnore
String createTime;
@ExcelIgnore
String updateTime;
@ExcelIgnore
String categoryCode;
}
3建立数据库
因为我们在读写操作时需要有一定的数据源才能把读写操作更加明显。
/*
Navicat Premium Data Transfer
Source Server : RpWn
Source Server Type : MySQL
Source Server Version : 50735 (5.7.35)
Source Host : localhost:3306
Source Schema : demo
Target Server Type : MySQL
Target Server Version : 50735 (5.7.35)
File Encoding : 65001
Date: 26/03/2024 16:39:43
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for goods
-- ----------------------------
DROP TABLE IF EXISTS `goods`;
CREATE TABLE `goods` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`price` decimal(10, 2) NULL DEFAULT NULL,
`num` int(11) NULL DEFAULT 0,
`weight` decimal(10, 2) NULL DEFAULT NULL,
`cpu` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`memory` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`bodyMemory` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`updateTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`isdel` bit(1) NULL DEFAULT b'0',
`categoryCode` varchar(7) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 297 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of goods
<