Hutool导入导出用法

整理了下Hutool导入导出的简单使用。

导入maven或jar包(注意这里导入的poi只是为了优化样式)

<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.3.0</version>
</dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.1</version>
</dependency>

代码部分:

import cn.hutool.core.io.FileUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import org.apache.poi.ss.usermodel.*;import javax.servlet.ServletOutputStream;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;/*** hutool测试(导入导出)*/
public class HutoolTest {public static void main(String[] args) {//导出exportExcel();//导入importExcel();}/*** 导出*/private static void exportExcel(){//本地导出的路径String exportPath = "E:/测试图片/测试.xlsx";try{//处理表头对应数据List<String> titleList = new LinkedList<>();titleList.add("姓名");titleList.add("年龄");titleList.add("地点");// 创建一些数据List<List<String>> data = new ArrayList<>();data.add(Arrays.asList("张三", "25", "北京"));data.add(Arrays.asList("李四", "30", "上海"));// 通过工具类创建writerExcelWriter writer = new ExcelWriter();// 一次性写出内容,使用默认样式,强制输出标题writer.writeHeadRow((Iterable<?>) titleList);// 写入内容writer.write(data);//设置表头宽度setSizeColumnBt(writer.getSheet(),titleList.size());Workbook workbook = writer.getWorkbook();//服务器上返回时
//            response.setContentType("application/vnd.ms-excel;charset=ISO-8859-1");
//            filename = new String(filename.getBytes("GB2312"), "ISO8859-1");
//            response.setHeader("content-disposition", "attachment;filename=" + filename);
//            response.addHeader("Pargam", "no-cache");
//            response.addHeader("Cache-Control", "no-cache");
//            ServletOutputStream sout = response.getOutputStream();//本地导出时ByteArrayOutputStream sout = new ByteArrayOutputStream();workbook.write(sout);InputStream input = new ByteArrayInputStream(sout.toByteArray());// 测试导出到本地writeToLocal(exportPath,input);System.out.println("导出完成");// 关闭writer,释放内存writer.close();workbook.close();sout.flush();sout.close();} catch (Exception e) {e.printStackTrace();}}/*** 导入*/private static void importExcel(){//本地导入的路径String importPath = "E:/测试图片/测试.xlsx";// 指定 Excel 文件路径(正常是通过input流转)File excelFile = FileUtil.file(importPath);// 创建 ExcelReader 对象ExcelReader reader = ExcelUtil.getReader(excelFile);// 读取第一个sheet的数据List<List<Object>> data = reader.read();for (List<Object> data1 : data){System.out.println(data1.toString());}}/*** 自适应宽度(中文支持)(表头)** @param sheet sheet* @param cellSize  因为for循环从0开始,size值为 列数-1*/private static void setSizeColumnBt(Sheet sheet, int cellSize) {for (int columnNum = 0; columnNum <= cellSize; columnNum++) {int columnWidth = sheet.getColumnWidth(columnNum) / 256;Row currentRow = sheet.getRow(0);if (currentRow.getCell(columnNum) != null) {Cell currentCell = currentRow.getCell(columnNum);if (currentCell.getCellType() == CellType.STRING) {int length = currentCell.getStringCellValue().getBytes().length;if (columnWidth < length + 1) {columnWidth = length + 8;}}}sheet.setColumnWidth(columnNum, columnWidth * 256);}}/*** 将InputStream写入本地文件* @param destination 写入本地目录* @param input 输入流* @throws IOException IOException*/public static void writeToLocal(String destination, InputStream input)throws IOException {int index;byte[] bytes = new byte[1024];FileOutputStream downloadFile = new FileOutputStream(destination);while ((index = input.read(bytes)) != -1) {downloadFile.write(bytes, 0, index);downloadFile.flush();}input.close();downloadFile.close();}
}

导出结果截图:
在这里插入图片描述

导入结果打印:

[姓名, 年龄, 地点]
[张三, 25, 北京]
[李四, 30, 上海]

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

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

相关文章

第七篇:node中间件详解

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 &#x1f4d8; 引言&#xff1a; &#…

微信小程序之下拉刷新事件、上拉触底事件和案例

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

第六篇:express路由拆分(模块化)

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 &#x1f4d8; 引言&#xff1a; &#x…

kerberos+kafka(2.13)认证(单节点ubuntu)

一&#xff1a;搭建kerberos。 1. 运行安装命令 apt-get install krb5-admin-server krb5-kdc krb5-user krb5-config2. 检查服务是否启动。 systemctl status krb5-admin-server systemctl status krb5-kdcsystemctl start krb5-admin-server systemctl startkrb5-kdc3. 修…

【大数据安全】大数据安全的挑战与对策基础设施安全

目录 一、大数据安全的挑战与对策 &#xff08;一&#xff09;数据加密技术 &#xff08;二&#xff09;大数据安全与隐私 &#xff08;三&#xff09;大数据安全保障体系 &#xff08;四&#xff09;华为大数据安全解决方案 二、基础设施安全 &#xff08;一&#xff0…

鸿蒙开发-UI-组件-气泡/菜单

鸿蒙开发-UI-组件 鸿蒙开发-UI-组件2 鸿蒙开发-UI-组件3 文章目录 前言 一、气泡提示 1.文本提示气泡 2.带按钮的提示气泡 3.自定义气泡 二、菜单 1.创建默认样式的菜单 2.创建自定义样式的菜单 3.创建支持右键或长按的菜单 总结 前言 上文主要学习了鸿蒙开发UI组件&…

目标检测任务的调研与概述

目标检测任务的调研与概述 0 FQA1 目标检测任务基本知识&#xff1a;1.1 什么是目标检测&#xff1f;1.2 目标检测的损失函数都有那些&#xff1f;1.2.1 类别损失&#xff1a;1.2.2 位置损失&#xff1a; 1.3 目标检测的评价指标都有那些&#xff1f;1.4 目标检测有那些常见的数…

微信小程序制作需要什么软件?

微信小程序自2017年推出以来&#xff0c;因其便捷性和巨大的用户基础&#xff0c;已成为企业和开发者争相布局的新领域。对于想要进入微信小程序这个市场的商家或企业来说&#xff0c;选择合适的制作软件是首要任务。那么微信小程序制作需要什么软件呢&#xff1f; 对于有开发…

【项目日记(六)】第二层: 中心缓存的具体实现(下)

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:项目日记-高并发内存池⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你做项目   &#x1f51d;&#x1f51d; 开发环境: Visual Studio 2022 项目日…

pycharm删除的文件怎么恢复找回

目录 1、点击被删除文件的所属上级目录右键&#xff1b; 2、弹出的右键菜单点击Local History&#xff0c;Show History 3、打开本地历史界面后&#xff0c;点击误删除文件&#xff1b; 4、在右侧区域&#xff0c;选中文件&#xff0c;点击右键&#xff1b; 5、在右键菜单…

【ArcGIS微课1000例】0099:土地利用变化分析

本实验讲述在ArcGIS软件中基于两期土地利用数据,做土地利用变化分析。 文章目录 一、实验描述二、实验过程三、注意事项一、实验描述 对城市土地利用情况进行分析时,需要考虑不同时期土地利用图层在空间上的差异性,如农用地转建筑用地的空间变化。而该变化过程表现为各时期…

【Android Studio 启动出错】

Android Studio版本&#xff1a;2022.3.1 出错前操作&#xff1a; 昨晚开着三四个项目&#xff0c;然后太晚了直接关机睡觉&#xff0c;第二天起来开机&#xff0c;启动Android Studio&#xff0c;就出现了这个问题&#xff1a; Internal error. Please refer to https://co…