hutool 自定义excel_Hutool Java 工具类库导出 Excel,超级简单!

前言

在开发应用系统的时候,导出文件是必不可放的功能。

以前用过POI、easyexcel等工具的导入导出功能,但总感觉太麻烦了,代码特别多,感觉并不是很好用。

今天给大家介绍一款新工具,java工具类库Hutool。

Hutool简介

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让使用者更轻松。

Hutool中的工具方法来自于每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;

Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。

使用

首先在POM.xml中加入GAV

cn.hutool

hutool-all

5.0.7

org.apache.poi

poi-ooxml

4.1.1

org.apache.poi

poi-ooxml-schemas

3.17

然后在控制层使用就行@RequestMapping("/export")

@ResponseBody

public void export(HttpServletResponse response){

List list = new ArrayList<>();

list.add(new User("zhangsan","1231",new Date()));

list.add(new User("zhangsan1","1232",new Date()));

list.add(new User("zhangsan2","1233",new Date()));

list.add(new User("zhangsan3","1234",new Date()));

list.add(new User("zhangsan4","1235",new Date()));

list.add(new User("zhangsan5","1236", DateUtil.date(new Date())));

// 通过工具类创建writer,默认创建xls格式

ExcelWriter writer = ExcelUtil.getWriter();

//自定义标题别名

writer.addHeaderAlias("name", "姓名");

writer.addHeaderAlias("age", "年龄");

writer.addHeaderAlias("birthDay", "生日");

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

writer.merge(2, "申请人员信息");

// 一次性写出内容,使用默认样式,强制输出标题

writer.write(list, true);

//out为OutputStream,需要写出到的目标流

//response为HttpServletResponse对象

response.setContentType("application/vnd.ms-excel;charset=utf-8");

//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码

String name = StringUtils.toUtf8String("申请学院");

response.setHeader("Content-Disposition","attachment;filename="+name+".xls");

ServletOutputStream out= null;

try {

out = response.getOutputStream();

writer.flush(out, true);

}

catch (IOException e) {

e.printStackTrace();

}

finally {

// 关闭writer,释放内存

writer.close();

}

//此处记得关闭输出Servlet流

IoUtil.close(out);

}

效果看到这里就已经结束了,是不是很简单?

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

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

相关文章

带头结点头部插入创建链表

/*创建一个带头结点的链表&#xff0c;头部插入法创建*/ #include<stdio.h> #include<stdlib.h>#define DataType chartypedef struct node {DataType data;struct node *next; }ListNode,*LinkList;/*创建一个带头结点的链表*/ LinkList createLinkList() {char c…

Java性能调优:充分利用垃圾收集器

JVM背后发生了什么&#xff0c;垃圾回收如何影响Java性能&#xff1f; 性能调优世界是一个危险的地方&#xff0c;一个JVM标志失衡&#xff0c;事情很快就会变得繁琐。 因此 &#xff0c;我们决定求助于Java性能调优专家&#xff0c; 单调 JVM探查器mjprof的创建者Haim Yadid …

[单选]物联网产业链的主要产品不包括下列哪一项 - 关于物联网(主讲:柳毅)笔记...

[单选]物联网产业链的主要产品不包括下列哪一项 转载于:https://www.cnblogs.com/scgw/p/3488452.html

java web读取excel_JavaWeb使用POI操作Excel文件实例

1.为项目添加POI点进去之后下载(上边的是编译好的类&#xff0c;下边的是源代码)解压文件夹&#xff0c;把下面三个文件复制到WebComtent>WEB-INF>lib文件夹下再把这三个文件复制到Tomcat的lib文件夹下&#xff0c;否则Tomcat会因为找不到类而报错(这个地方郁闷了一上午)…

架构大型企业Java项目–我的虚拟JUG会话

昨天我很荣幸被邀请参加虚拟JUG 。 这是一个很大的荣誉&#xff0c;其原因有很多&#xff1a;首先&#xff0c;我是vJUG董事会的一员&#xff0c;其次&#xff0c;因为这是我第二次向这个对Java感兴趣的伟大团队做演讲。 被邀请回来总是很高兴的。 架构大型企业Java项目 过去&…

javascript操作cookie

1. 什么是cookie&#xff1f; Cookie就是浏览器保存在计算机上面的一下信息。一般是保存用户登录状态&#xff0c;就是说Cookie会保存用户登录某个网站的信息在本地&#xff0c;下次这个用户访问网站的时候会自动取出他的Cookie信息&#xff0c;方便定制用户想要的内容。2. 实例…

java 静态方法与实例方法的区别_静态方法与实例方法的区分

Java系列之&#xff1a;看似简单的问题 静态方法和实例化方法的区别Java程序启动class文件被读取时类被加载&#xff0c;如果有static方法&#xff0c;此时会分配内存&#xff0c;非static方法实例化类时才在内存中分配控件存储&#xff0c;引用存储在堆栈中&#xff0c;实体存…

使用wrapper将java程序注册程windows服务后不生效

使用wrapper将java程序注册程windows服务后不生效 使用add.bat或test***.bat测试通过了&#xff0c; 然后使用install***.bat注册后cmd显示注册成功。 但是程序到了运行时间就是不运行&#xff01;&#xff01; 解决办法 控制面板 ---> 管理工具 ---> 服务&#xff0c;找…

有简历,为何还要自我介绍?

有简历&#xff0c;为何还要自我介绍&#xff1f; 一个常规的面试&#xff0c;寒暄之后考官提出的第一个面试问题几乎千篇一律&#xff1a;“请你简单地做一下自我介绍”。有些被面试者都会问&#xff1a;简历中情况已经写得很清楚了&#xff0c;这是否多此一举&#xff1f; 要…

java aio聊天_JAVA aio简单使用

使用aio&#xff0c;实现客户端和服务器 对一个数进行轮流累加//服务器端public class Server {private static ExecutorService executorService Executors.newFixedThreadPool(4);public static void main(String[] args) {try {AsynchronousChannelGroup groupAsynchronous…

使用jOOQ的MockDataProvider破解简单的JDBC ResultSet缓存

某些查询不应该一直访问数据库。 例如&#xff0c;当您查询主数据 &#xff08;例如系统设置&#xff0c;语言&#xff0c;翻译等&#xff09;时&#xff0c;您可能希望避免一直通过网络发送相同的愚蠢查询&#xff08;和结果&#xff09;。 例如&#xff1a; SELECT * FROM l…

ASP.NET内置对象

Request[从浏览器获取信息] QueryString:获取HTTP查询字符串变量集合 Path:获取当前请求的虚拟路径 UserHostAddress:获取远程客户端的IP主机地址 Browser:获取有关正在请求的客户端浏览器功能的信息 Form:获取窗体变量的集合 Url:获取当前请求的URL信息 MapPath():返回与Web服…

java爬虫新闻网站_java爬虫 之 搜狐新闻爬虫(一)

最近开始学习java爬虫&#xff0c;网上很多教程&#xff0c;自己找的时候花了好久的时间去理解别人的思路。打算将自己最近的学习进度稍作整理&#xff0c;理清思路。主要工具使用jsoup&#xff1a;具体用法看http://blog.csdn.net/u012315428/article/details/51135640下面是获…

easyui源码翻译1.32--ValidateBox(验证框)

前言 使用$.fn.validatebox.defaults重写默认值对象。下载该插件翻译源码 validatebox(验证框)的设计目的是为了验证输入的表单字段是否有效。如果用户输入了无效的值&#xff0c;它将会更改输入框的背景颜色&#xff0c;并且显示警告图标和提示信息。该验证框可以结合form(表单…

java静态方法获取对象_JavaPowerMockito模拟单个静态方法和返回对象

小编典典你想要做的是1的一部分和2的全部的组合。你需要使用PowerMockito.mockStatic为类的所有静态方法启用静态模拟。这意味着可以使用when-thenReturn语法对它们进行存根。但是&#xff0c;当你调用尚未在模拟实例上显式存根的方法时&#xff0c;你正在使用的2个参数的mathS…

从战中反弹:将Git提交信息作为JSON返回

在某些情况下&#xff0c;我们必须知道部署到远程服务器的Web应用程序的确切版本。 例如&#xff0c;客户可能想知道我们是否已经在服务器X上部署了错误修复程序。 当然&#xff0c;我们可以尝试使用“传统”方法找到该问题的答案。 问题是&#xff1a; 没有人不记得是谁更新…

在论坛中出现的各种疑难问题:日志收缩问题

最近&#xff0c;在论坛中&#xff0c;遇到了不少疑难的问题&#xff0c;在此特别记录&#xff0c;同时也感谢发帖人的分享、以及其他网友的热心回答。 1、日志暴大&#xff0c;无法收缩&#xff0c;谁来挑战一下&#xff01; http://bbs.csdn.net/topics/390674731?page1#pos…

学java前要学css_教你一招:学习Java必须学会的CSS用法

一&#xff1a;CSS概述什么是CSSCSS就是层叠样式表(Casading Style Sheets)&#xff0c;通常称为CSS样式表&#xff0c;或者是级联样式表。主要用于设置HTML中的文本&#xff0c;内容(字体&#xff0c;大小&#xff0c;对齐)&#xff0c;图片外形(宽高&#xff0c;边框样式&…

标准I/O库之缓冲

标准I/O库提供缓冲的目的是尽可能减少使用read和write调用的次数。它也对每个I/O流自动地进行缓冲管理&#xff0c;从而避免了应用程序需要考虑这一点所带来的麻烦。 标准I/O提供了三种类型的缓冲&#xff1a; &#xff08;1&#xff09;全缓冲。这种情况下&#xff0c;在填满标…

java如何写安卓接口文档_android、java制作sdk以及自动生成文档

最近一直在做android开发&#xff0c;昨天经理让我写个接口SDK做个接口文档&#xff0c;以便后面的开发。这让我很焦灼&#xff0c;SDK怎么做&#xff1f;要是只有敲代码还好。可是那个接口文档&#xff01;&#xff01;&#xff01;文档这东西最讨厌了&#xff0c;头都大了后来…