java是怎么去操作excel表格
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,本篇内容介绍了"java是怎么去操作excel表格"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录
千家信息网最后更新 2025年01月18日java是怎么去操作excel表格
本篇内容介绍了"java是怎么去操作excel表格"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
目录
使用场景
什么是easyExcel
写入表格
1、引入依赖
2、先创建与表对应的实体类
3、生成表格
读取表格
1、实体类 同上。
2、解析
3、测试
使用场景
1、将用户信息导出为excel表格(导出数据....)
2、将Excel表中的信息录入到网站数据库(习题上传....)大大减轻网站录入量!开发中经常会设计到excel的处理,如导出Excel,导入Excel到数据库中!
操作Excel目前比较流行的就是Apache POI和阿里巴巴的easyExcel !
这里我们主要使用easyExcel进行操作
什么是easyExcel
EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。
官网:EasyExcel · 语雀 (yuque.com)
一个excel表格由工作簿、工作表、行、列组成
写入表格
1、引入依赖
com.alibaba easyexcel 2.2.0-beta2 com.alibaba fastjson 1.2.54 org.projectlombok lombok 1.18.20 joda-time joda-time 2.10.10 junit junit 4.13.2
2、先创建与表对应的实体类
@Datapublic class DemoData { @ExcelProperty("字符串标题") private String string; @ExcelProperty("日期标题") private Date date; @ExcelProperty("数字标题") private Double doubleData; /** * 忽略这个字段 */ @ExcelIgnore private String ignore;}
3、生成表格
private Listdata() { List list = new ArrayList (); for (int i = 0; i < 10; i++) { DemoData data = new DemoData(); data.setString("字符串" + i); data.setDate(new Date()); data.setDoubleData(0.56); list.add(data); } return list; } //根据list 写入excel @Test public void simpleWrite() { String path = "D:\\qdSystem\\Resources\\下载\\"; // 写法1 String fileName = path + "qiadnu.xlsx"; // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 EasyExcel.write(fileName, DemoData.class).sheet("模板").doWrite(data()); }
读取表格
1、实体类 同上。
2、解析
// 有个很重要的点 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去public class DemoDataListener extends AnalysisEventListener{ private static final Logger LOGGER = LoggerFactory.getLogger(DemoDataListener.class); /** * 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收 */ private static final int BATCH_COUNT = 5; List list = new ArrayList (); /** * 假设这个是一个DAO,当然有业务逻辑这个也可以是一个service。当然如果不用存储这个对象没用。 */ private DemoDAO demoDAO; public DemoDataListener() { // 这里是demo,所以随便new一个。实际使用如果到了spring,请使用下面的有参构造函数 demoDAO = new DemoDAO(); } /** * 如果使用了spring,请使用这个构造方法。每次创建Listener的时候需要把spring管理的类传进来 * * @param demoDAO */ public DemoDataListener(DemoDAO demoDAO) { this.demoDAO = demoDAO; } /** * 这个每一条数据解析都会来调用 * @param context */ @Override public void invoke(DemoData data, AnalysisContext context) { LOGGER.info("解析到一条数据:{}", JSON.toJSONString(data)); list.add(data); // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM if (list.size() >= BATCH_COUNT) { saveData(); // 存储完成清理 list list.clear(); } } /** * 所有数据解析完成了 都会来调用 * * @param context */ @Override public void doAfterAllAnalysed(AnalysisContext context) { // 这里也要保存数据,确保最后遗留的数据也存储到数据库 saveData(); LOGGER.info("所有数据解析完成!"); } /** * 加上存储数据库 */ private void saveData() { LOGGER.info("{}条数据,开始存储数据库!", list.size()); demoDAO.save(list); LOGGER.info("存储数据库成功!"); }}
Dao层
/** * 假设这个是你的DAO存储。当然还要这个类让spring管理,当然你不用需要存储,也不需要这个类。 **/public class DemoDAO { public void save(Listlist) { // 如果是mybatis,尽量别直接调用多次insert,自己写一个mapper里面新增一个方法batchInsert,所有数据一次性插入 }}
3、测试
@Test public void simpleRead() { // 有个很重要的点 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去 // 写法1: String fileName = path + "qiadnu.xlsx"; // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭 EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead(); }
"java是怎么去操作excel表格"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
数据
表格
存储
数据库
内存
实体
方法
管理
实际
标题
网站
重要
不用
信息
内容
写法
场景
字符
字符串
情况
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全工程师月薪多少
fastftp文件图片服务器
电脑本地服务器连接失败咋回事
软件开发的前台工具
如何检查代理服务器配置
网络安全隐患粤语
什么是幼儿园网络安全教育
张小娴小说软件开发
服务器关闭的程序在日志哪里看
软件开发url是什么意思
深信服科技服务器地址
怎么攻击私人服务器
软件开发有哪几类工作
深圳华为软件开发待遇
如何扩展dbc数据库
超星数字图书馆数据库的结果分析
女生网络安全教育心得体会
北京数据网络技术价目表
一般数据库设计保留几位小数
工业互联网 剑桥科技
计算机数据库管理简单解释
内网ntp时间服务器
浏览器清理数据库
招聘软件开发学徒是骗人吗
网络安全活动过程记载表
塔式gpu服务器采购技术参数
数据库 0 和 空值
余姚计算机软件开发工程
在cad中添加影像数据库
网络技术基础尚晓航