前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >java导入导出excel数据&图片合成工具

java导入导出excel数据&图片合成工具

作者头像
不愿意做鱼的小鲸鱼
发布于 2023-04-28 09:01:38
发布于 2023-04-28 09:01:38
1.4K20
代码可运行
举报
文章被收录于专栏:web全栈web全栈
运行总次数:0
代码可运行

java导出和导入excel数据

可以使用hutool的ExcelUtil工具。 在项目中加入以下依赖:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.16</version>
</dependency>

java读取excel数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    // 批量导入用户
    @Log("批量导入用户")
    @ApiOperation("批量导入用户")
    @PostMapping("/loadtocreate")
    public ResultVO loadtocreate(MultipartFile file) throws IOException {
        // 获取文件扩展名,不带 .
        String extensionName = FileUtil.getExtensionName(file.getOriginalFilename());
        if (!extensionName.equals("xls") && !extensionName.equals("xlsx")) {
            return new ResultVO(211, "批量导入请上传excel表格文件");
        }

        ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
        reader.addHeaderAlias("用户名", "username");
        reader.addHeaderAlias("昵称", "nickName");
        reader.addHeaderAlias("电话", "phone");
        reader.addHeaderAlias("邮箱", "email");
        reader.addHeaderAlias("性别", "gender");
        List<UserOfExcel> list = reader.readAll(UserOfExcel.class);
        Long orgId = SecurityUtils.getCurrentUserOrgId();
        Org org = new Org();
        org.setId(orgId);

        Set<Role> roles = new HashSet<>();
        Role role = new Role();
        // 普通用户
        role.setId(2L);
        roles.add(role);

        List<User> users = new ArrayList<>();
        for (UserOfExcel userOfExcel : list) {
            User user = new User();
            BeanUtils.copyProperties(userOfExcel, user);
            user.setPassword(passwordEncoder.encode("123456"));
            user.setIsAuth(true);
            user.setOrg(org);
            user.setRoles(roles);
            user.setEnabled(true);
            users.add(user);
        }
        userService.createAll(users);
        return new ResultVO(200, "导入成功");
    }

    // FileUtill类方法:获取文件扩展名,不带 .
    public static String getExtensionName(String filename) {
        if ((filename != null) && (filename.length() > 0)) {
            int dot = filename.lastIndexOf('.');
            if ((dot > -1) && (dot < (filename.length() - 1))) {
                return filename.substring(dot + 1);
            }
        }
        return filename;
    }

主要代码: 文件流读取xls或者xlsx文件,然后通过设置表头字段,将每一行数据转换成一个java对象,最后导出成List

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
        reader.addHeaderAlias("用户名", "username");
        reader.addHeaderAlias("昵称", "nickName");
        reader.addHeaderAlias("电话", "phone");
        reader.addHeaderAlias("邮箱", "email");
        reader.addHeaderAlias("性别", "gender");
        List<UserOfExcel> list = reader.readAll(UserOfExcel.class);

java数据导出成excel表格

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Override
    public void download(List<FeedbackDto> queryAll, HttpServletResponse response) throws IOException {
        List<Map<String, Object>> list = new ArrayList<>();
        for (FeedbackDto feedbackDto : queryAll) {
            Map<String, Object> map = new LinkedHashMap<>();
            map.put("反馈内容", feedbackDto.getContent());
            map.put("反馈类型", feedbackDto.getType());
            map.put("设备ID", feedbackDto.getSysId());
            map.put("用户联系方式", feedbackDto.getUserId());
            map.put("openid", feedbackDto.getOpenId());
            map.put("反馈资料", feedbackWebPath + "preview?id=" + feedbackDto.getId());
            map.put("反馈时间", feedbackDto.getTime());
            list.add(map);
        }
        // 导出excel
        FileUtil.downloadExcel(list, response);
    }

    /**
     * 导出excel
     */
    public static void downloadExcel(List<Map<String, Object>> list, HttpServletResponse response) throws IOException {
        // 文件名
        String tempPath = SYS_TEM_DIR + IdUtil.fastSimpleUUID() + ".xlsx";
        File file = new File(tempPath);
        BigExcelWriter writer = ExcelUtil.getBigWriter(file);
        // 一次性写出内容,使用默认样式,强制输出标题
        writer.write(list, true);
        //response为HttpServletResponse对象
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
        //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
        response.setHeader("Content-Disposition", "attachment;filename=file.xlsx");
        ServletOutputStream out = response.getOutputStream();
        // 终止后删除临时文件
        file.deleteOnExit();
        writer.flush(out, true);
        //此处记得关闭输出Servlet流
        IoUtil.close(out);
    }

java数据导出成excel表格的的关键操作: 1、将Java对象List转换成List<Map<String, Object>>的List,每个Map为excel一行数据 2、新建文件,使用ExcelUtil写入数据 3、可使用HttpServletResponse输出响应流,在客户端直接下载

java服务端图片合成的工具

ImageCombiner是一个专门用于Java服务端图片合成的工具,没有很复杂的功能,简单实用,从实际业务场景出发,提供简单的接口,几行代码即可实现图片拼合(当然用于合成水印也可以),素材上支持图片、文本、矩形三种,支持定位、缩放、旋转、圆角、透明度、颜色、字体、字号、删除线、居中绘制、文本自动换行等特性,足够覆盖图片合成的日常需求。

在项目中加入以下依赖:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
    <groupId>com.freewayso</groupId>
    <artifactId>image-combiner</artifactId>
    <version>2.6.3</version>
</dependency>

示例合成海报代码: 海报背景 + 二维码 + 头像图片

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  public static String MergeImage2(String qrCodeUrl, String headImgUrl, String filename) throws Exception {
        // 背景图
        String bgImagePath = "https://img-blog.csdnimg.cn/fff475d24c8d47cf893528b508c60941.jpeg";
        //头像图片
        BufferedImage avatar = ImageIO.read(new URL(headImgUrl));
        BufferedImage bgImage = ImageIO.read(new URL(bgImagePath));

        //合成器和背景图(整个图片的宽高和相关计算依赖于背景图,所以背景图的大小是个基准)
        ImageCombiner combiner = new ImageCombiner(bgImage, OutputFormat.PNG);
        combiner.setBackgroundBlur(0);     //设置背景高斯模糊(毛玻璃效果)
        combiner.setCanvasRoundCorner(0); //设置整图圆角(输出格式必须为PNG)

        //头像(圆角设置一定的大小,可以把头像变成圆的)
        combiner.addImageElement(avatar, 503, 1200, 186, 186, ZoomMode.WidthHeight)
                .setRoundCorner(10)
                .setBlur(0);       //高斯模糊,毛玻璃效果

        //二维码(强制按指定宽度、高度缩放)
        combiner.addImageElement(ImageIO.read(new URL(qrCodeUrl)), 138, 1200, 186, 186, ZoomMode.WidthHeight).setRoundCorner(10);

        //执行图片合并
        combiner.combine();

        //保存文件
        String path = "D:\\img\\" + filename + "_full.png";
        combiner.save(path);

        return path;
    }

    @Test
    public static void main(String[] args) throws Exception {
        String qrCodeUrl = "http://qiniu.qkongtao.cn/2020/03/weixin.jpg";
        String headImgUrl = "https://img-blog.csdnimg.cn/7c11e9a1b5764fa3b612545b65bf00e6.png";
        String path = MergeImage2(qrCodeUrl, headImgUrl, "111111111");
        System.out.println(path);
    }

效果如下:

image-combiner图像处理项目具体源码和教程可以看开源项目:https://gitee.com/dromara/image-combiner

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
2 条评论
热度
最新
写的真好,哥们一看就知道是学有限元的,最近在理解高斯点和二重积分的关系。
写的真好,哥们一看就知道是学有限元的,最近在理解高斯点和二重积分的关系。
回复回复点赞举报
好兄弟,你前面的方法写的真的很好,不过你的I化错了,是(x[i]+1)^2,不是(x[i]+1)^2/4,这一步就导致你后面python公式写错了所以结果也错了。正确高斯公式求积结果应该是13.6668067。和他的解析解相差0.00014。
好兄弟,你前面的方法写的真的很好,不过你的I化错了,是(x[i]+1)^2,不是(x[i]+1)^2/4,这一步就导致你后面python公式写错了所以结果也错了。正确高斯公式求积结果应该是13.6668067。和他的解析解相差0.00014。
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
SSM中使用POI实现excel的导入导出
环境:导入POI对应的包 环境: Spring+SpringMVC+Mybatis POI对应的包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.14</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi
ZhangXianSheng
2019/05/28
2.9K0
excel的导入导出和异常非空 总计等处理;导出多个excel合并导出zip(hutool导出)(详细讲解包括分析等等)
我的建议: 1、时时刻刻想着面向对象,写代码时多想一下,这个功能需要哪些对象来干这件事,怎么干在其次,想明白你需要的对象后就去想流程,最后在去组织代码,尽量从后往前看 2、搞清楚问题,遇到什么问题就去解决什么问题,问问题最怕不知道是啥问题,要不然百度都不知道怎么搜
默 语
2024/11/20
1420
excel的导入导出和异常非空 总计等处理;导出多个excel合并导出zip(hutool导出)(详细讲解包括分析等等)
Java通过Poi的开发Excel导入导出和下载功能
最近有用到Excel的下载、导入、导出功能。提供一个Excel模板给用户下载,用户根据规范填写模板然后再导入Excel数据,保存到数据库,也可导出类表数据为Excel。因为有时候页面添加功太麻烦,就做成这样的Excel批量导入。
sunonzj
2022/06/21
2.8K0
Java通过Poi的开发Excel导入导出和下载功能
Hutool工具类之excel导入导出
文章目录 1、导入excel 2、导出excel 1、导入excel ExcelReader reader = ExcelUtil.getReader("D:\\test.xlsx"); // 第一种,Map List<Map<String, Object>> maps = reader.readAll(); System.out.println("maps = " + maps); // 第二种,实体类 List<User> userList = reader.readAll(User.class);
程序员云帆哥
2022/12/28
4.6K0
java导出Excel表格
最近自己着手写了一个前后端分离的后台管理系统(主要是写着玩,java还是熟悉一点,所以前后端均是自己写),后端使用的Java SpringMVC。后来想着在用户管理中添加一个导出功能,所以就上网查了资料,实现了简单的导出功能,在这里记录下自己的过程。 1、在java项目中引入导出功能需要的jar包   poi-3.9.jar   poi-examples-3.9.jar   poi-excelant-3.9.jar   poi-ooxml-3.9.jar   poi-ooxml-schemas-3.9.ja
用户1174387
2018/01/17
4.8K0
java导出Excel表格
Java导入导出Excel工具类ExcelUtil
前段时间做的分布式集成平台项目中,许多模块都用到了导入导出Excel的功能,于是决定封装一个ExcelUtil类,专门用来处理Excel的导入和导出
用户7705674
2021/09/23
3.4K0
java导出excel(一):单sheet
相信在大部分的web项目中都会有导出导入Excel的需求,今天我们就来看看如何用Java代码去实现 用POI导出Excel表格。
军军不吃鸡
2022/10/26
1.4K0
java导出excel(一):单sheet
Spring Boot使用easyexcel实现导入导出Excel
目标:实现Spring Boot使用easyexcel实现导入导出Excel 工具:IDEA--2020.1 学习目标:Spring Boot使用easyexcel实现导入导出Excel 本次学习的工程下载链接放到文本最后面(含数据库) 首先导入依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.6</version> <
背雷管的小青年
2020/06/09
23.6K14
java导出Excel文件
  最近在java上做了一个EXCEL的导出功能,写了一个通用类,在这里分享分享,该类支持多sheet,且无需手动进行复杂的类型转换,只需提供三个参数即可:
用户2038589
2018/09/06
1.9K0
使用 EasyPOI 优雅导出Excel模板数据(含图片)
来源 | blog.csdn.net/u012441819/article/details/96828044
程序猿DD
2020/09/24
8.9K0
使用 EasyPOI 优雅导出Excel模板数据(含图片)
Springboot+Poi实现Excel的导入导出
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
默存
2022/06/17
3.4K0
Springboot+Poi实现Excel的导入导出
【PUSDN】java中easyexcel导入导出带有图片的Excel(main方法方式)
java中easyexcel导入导出带有图片的Excel(main方法方式),web方式详见另一篇
JaneYork
2023/11/30
1.3K0
【PUSDN】java中easyexcel导入导出带有图片的Excel(main方法方式)
Npoi导入导出Excel操作
    之前公司的一个物流商系统需要实现对订单的批量导入和导出,翻阅了一些资料,最后考虑使用NPOI实现这个需求。 在winform上面实现excel操作:http://www.cnblogs.com/CallmeYhz/p/4920293.html,NPOI的主页:http://npoi.codeplex.com/ 简介 NPOI 是 POI 项目的 .NET 版本。POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目, 使用 NPOI 你就可以在没有安装 Office 或者相应
用户1055830
2018/01/18
4.7K1
Npoi导入导出Excel操作
Java基于注解和反射导入导出Excel
1. 构建项目 使用Spring Boot快速构建一个Web工程,并导入与操作Excel相关的POI包以及一些常用的工具类包,pom文件中添加如下一些依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency> <dep
用户2017109
2018/06/19
1.7K0
Java实现Excel导入和导出,看这一篇就够了(珍藏版)
最近抽了两天时间,把Java实现表格的相关操作进行了封装,本次封装是基于 POI 的二次开发,最终使用只需要调用一个工具类中的方法,就能满足业务中绝大部门的导入和导出需求。
全栈程序员站长
2022/09/14
4K0
Java实现Excel导入和导出,看这一篇就够了(珍藏版)
Get几个非常实用技能——常用文件操作工具类、图片视频操作
工具类中的方法 1. toFile:MultipartFile转File 参数:MultipartFile multipartFile 2. getExtensionName:获取文件扩展名,不带 . 参数:String filename 3. getFileNameNoEx:Java文件操作 获取不带扩展名的文件名 参数:String filename 4. getSize:文件大小转换 参数:long size 5. inputStreamToFile:inputStream 转 File 参数:InputStream ins, String name 6. upload:将文件名解析成文件的上传路径 MultipartFile file, String filePath 7. downloadExcel:导出excel 参数:List<Map<String, Object>> list, HttpServletResponse response 8. getFileType:获取文件类型 参数:String type 9. getTransferFileType:获取文件类型英文名 参数:String type 10. checkSize:检测文件是否超出允许范围 参数:long maxSize, long size 11. check:判断两个文件是否相同 参数:File file1, File file2 12. getByte:获取文件字节长度 参数:File file 13. getMd5:将字节数组转换为16进制字符 参数:byte[] bytes 14. downloadFile:下载文件 参数:HttpServletRequest request, HttpServletResponse response, File file, boolean deleteOnExit
不愿意做鱼的小鲸鱼
2022/09/26
9510
Get几个非常实用技能——常用文件操作工具类、图片视频操作
Hutool 超强工具类使用 & 导出excel
Hutool参考文档官网:https://www.hutool.cn/docs/#/
收心
2022/01/14
3K0
Hutool 超强工具类使用 & 导出excel
SpringBoot实现Excel导入导出,好用到爆,POI可以扔掉了!
用惯了SpringBoot的朋友估计会想到,有没有什么办法可以直接定义好需要导出的数据对象,然后添加几个注解,直接自动实现Excel导入导出功能?
macrozheng
2021/11/01
13K0
java:POI导出excel
POI是一个开源项目,专用于java平台上操作MS OFFICE,企业应用开发中可用它方便导出Excel. 下面是使用示例: 1、maven中先添加依赖项 1 <dependency> 2 <groupId>org.apache.poi</groupId> 3 <artifactId>poi</artifactId> 4 <version>3.11</version> 5 </dependency> 2、
菩提树下的杨过
2018/01/19
3K0
java:POI导出excel
Excel导入导出便捷工具类
针对Excel操作,alanpoi是为了实现一个操作更加简单,开发效率更加高的工具,开发者不需要关心太多的逻辑,只需要处理和自己业务相关的部分; 化繁为简,由简变精的原则
芈亓
2022/06/28
9000
推荐阅读
相关推荐
SSM中使用POI实现excel的导入导出
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验