Java小白翻身-Excel教程

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

}

首先,我们捋一捋思路,顺便复习一下之前保存用户的方法。之前的做法是,如果用户选择【客户登记入库】,程序则去读取D盘的customer.txt文件,然后转换里面的信息到cstList里面。

Application.cstList.add(customer);

这个是方便我们看到刚刚保存的数据,现在我们的难点在于,如何实现将客户对象保存到Excel中?

在CustomerServiceImpl中,我们的saveToExcel方法这是一个壳子,实际上并没有实现保存逻辑呢。

@Override

public boolean saveToExcel(TuziLinkedList customers, String excelPath) {

customers.forEachRemaining(new Consumer() {

@Override

public void accept(Object o) {

//把Object类型的o对象,强制转化成Customer类型

Customer cst = (Customer) o;

System.out.println(cst.getName() + “已经成功保存到Excel!”);

}

});

return true;

}

这个时候,我们就发现问题了,就是saveToExcel这个方法,接收的参数是customers,是TuziLinkedList类型的。这就表明,需要的是一个容器,这个容器里面可能有多个客户对象啊,所以我们的注释写的就有点问题。具体为啥这样写,好像是我打算做成单个入库的,不做批量入库。

似乎是我忘记改了,咳咳… … 小细节,小细节,不要在意。。。

我们得重新设计一下saveToExcel这个方法,修改其参数为当前的客户对象。

image

image

image

然后修改这里:

image

image

然后就发现,这个方法报错了,因为我们刚刚把容器对象改成了单个客户对象。注意,虽然现在参数的名字还叫做customers,但是注意看它左边的类型,已经是Customer,而不是之前的TuziLinkedList了。为了安全起见,不造成混淆,我们也把customers改成customer。(接口里面也要改)

image

image

再回到实现类,发现这一块报错了。

image

我们在上一节的【接口】章节中,讲解了这个属于 new一个匿名实现类 ,它是java中的一个高级写法。我们现在为了项目进度,只打算做单个保存,不做批量保存,就暂时用不到了。但是,这种写法还是非常不错的,绝对的装逼利器,值得大家好好品鉴和体会(偷偷告诉你,在很多框架里面,到处都是这种写法。如果再弄得逼格高点,就是所谓的Lamda表达式了,这个暂且不谈)。

好不容易写出来,删掉可惜,我们就注释掉吧。

@Override

public boolean saveToExcel(Customer customer, String excelPath) {

// customers.forEachRemaining(new Consumer() {

// @Override

// public void accept(Object o) {

// //把Object类型的o对象,强制转化成Customer类型

// Customer cst = (Customer) o;

// System.out.println(cst.getName() + “已经成功保存到Excel!”);

// }

// });

return true;

}

没错,还是要用到Hutool,没想到吧。Hutool封装了POI(一种java跟office打交道的lib库),把Excel的生成变得格外简单了。

image

为了方便大家练习,我会直接放出整个项目的下载地址,也包括了这两个jar包。

@Override

public boolean saveToExcel(Customer customer, String excelPath) {

//通过工具类创建writer

ExcelWriter writer = ExcelUtil.getWriter(excelPath);

//定义标题

writer.addHeaderAlias(“name”, “客户姓名”);

writer.addHeaderAlias(“sex”, “性别”);

writer.addHeaderAlias(“birthDate”, “生日”);

writer.addHeaderAlias(“phoneNumber”, “电话号码”);

// 合并单元格后的标题行,使用默认标题样式

writer.merge(4, “客户信息”);

本次面试答案,以及收集到的大厂必问面试题分享:

字节跳动超高难度三面java程序员面经,大厂的面试都这么变态吗?

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
的标题行,使用默认标题样式

writer.merge(4, “客户信息”);

本次面试答案,以及收集到的大厂必问面试题分享:

[外链图片转存中…(img-v728DdyI-1714453846364)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值