专栏首页用户1096981的专栏Excel文件加密的两种方式

Excel文件加密的两种方式

Excel文件加密的两种方式

我们经常会遇到导出的数据需要安全和需要脱敏的场景,这种场景下如何做呢,这里我们使用EasyExcel来实现,有以下两种方案

使用EasyExcel配合Zip4j将文件加密为zip

Zip4j的压缩选项更多

    //生成密码压缩文件
    private static File getZipFile(File  file,char [] pwd) throws ZipException {
        ZipFile zipFile = new ZipFile(UUID.randomUUID().toString()+".zip",pwd);
        ZipParameters parameters = new ZipParameters();
        // 压缩级别
        parameters.setCompressionMethod(CompressionMethod.DEFLATE);
        parameters.setCompressionLevel(CompressionLevel.NORMAL);
        parameters.setEncryptFiles(true);
        parameters.setEncryptionMethod(EncryptionMethod.ZIP_STANDARD);
        parameters.setAesKeyStrength(AesKeyStrength.KEY_STRENGTH_256);
        zipFile.addFile(file,parameters);
        return zipFile.getFile();
    }
    //转换File为MultipartFile
        public static MultipartFile getMultipartFile(File file,String pwd) throws Exception{
        File zipFile =   getZipFile(file,pwd.toCharArray());
        MultipartFile multipartFile = new CommonsMultipartFile(ExcelUtil.createFileItem(zipFile));
        if (file != null && file.exists()) {
            file.delete();
        }
        if (zipFile != null && zipFile.exists()) {
            zipFile.delete();
        }
        return multipartFile;
    }
 
        /**
     *  multipartFile.getInputStream()
     * @description: 将输入流输出到页面
     */
    public static void writeFile(HttpServletResponse resp, InputStream inputStream) {
        OutputStream out = null;
        try {
            out = resp.getOutputStream();
            int len = 0;
            byte[] b = new byte[1024];
            while ((len = inputStream.read(b)) != -1) {
                out.write(b, 0, len);
            }
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (out != null) {
                    out.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

使用的pom,请使用最新版,之前的老版本会有安全问题

        <dependency>
            <groupId>net.lingala.zip4j</groupId>
            <artifactId>zip4j</artifactId>
            <version>2.10.0</version>
        </dependency>

直接使用EasyExcel的password为Excel文件加密

        ExcelWriter writer = null;
        OutputStream outputStream = null;
        try {
            String fileName = UUID.randomUUID() + excelTypeEnum.getValue();
            prepareResponse(response, fileName);
            outputStream = response.getOutputStream();
            writer = EasyExcel.write(outputStream)
                    .excelType(excelTypeEnum)
                    .password(pwd)
                    .build();
            WriteSheet sheet = EasyExcel.writerSheet(sheetName)
                    .head(dataList.get(0).getClass())
                    .build();
            writer.write(dataList, sheet);

        } finally {
            if (writer != null) {
                writer.finish();
            }
            if (outputStream != null) {
                outputStream.close();
            }
        }
文章分享自微信公众号:
微瞰技术

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

作者:赵镇
原始发表时间:2022-05-02
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • Excel文件读取的两种方式

    dw=DataFrams(data=dict,columns=dict.keys())

    py3study
  • java导出excel的两种方式

    这篇在我的csdn上阅读数近三万,点赞几十个,算是比较火的一篇了,在这里分享一下,公司总免不了与文件导入导出打交道,前段时间我做了媒体预览服务,媒...

    jiankang666
  • 使用Pandas读取加密的Excel文件

    这个消息表示试图在不提供密码的情况下读取使用密码加密的文件。在本文中,将展示如何将加密的Excel文件读入pandas。

    fanjy
  • [1129]HDFS查看文件的两种方式

    可以查看hdfs文件目录的结构,副本数,block大小,文件的大小,但是不能查看文件的内容,要是查看文件的内容的话,得把文件给下载下来

    周小董
  • python 暴力破解 excel加密文件

    三更两点
  • FFmpeg 加密 mpegts 文件的处理方式

    在FFmpeg中加密有很多种处理方式,FFmpeg中常见的加密是使用crypto来进行的,下面看一下crypto的文档描述部分:

    用户3765803
  • 使用Python批量删除加密Excel文件的密码

    如果碰到加密的Excel文件,则会很麻烦。在本文中,将展示如何使用Python删除Excel文件密码。

    fanjy
  • linux系统挂载ISO文件的两种方式

    1 在虚拟机的设置中 将cd/dvd 设备状态全部勾选 2 连接ios镜像 3 将光驱挂载到目录

    云缓缓知我意
  • Laravel基础-关于引入公共文件的两种方式

    (2)、然后在Http\Controllers\ViewController.php中写入方法;

    砸漏
  • vue.js--加载JSON文件的两种方式

    本周的项目有个需求,需要把打包好的项目,通过直接变更JSON的配置文件,动态的渲染页面。。

    用户7741497
  • 导入excel时,前端传加密文件流,后端拿到后生成excel

    两种方式都是,浏览器(前端)点击导入按钮,弹出文件选择框,点击文件选择打开,此时前端拿到该文件的文件流(或者fileItem对象),作为参数传递给后端。 后端...

  • 这两种包含头文件的方式有啥区别

    如题所问,在 C/C++ 中,#include <filename>和#include "filename"两种写法有什么区别?

    ClearSeve
  • PHP使用ajax的post方式下载excel文件简单示例

    本文实例讲述了PHP使用ajax的post方式下载excel文件。分享给大家供大家参考,具体如下:

    砸漏
  • Selenium系列(十一) - 针对两种上传文件方式的实现方案

    https://www.cnblogs.com/poloyy/category/1680176.html

    小菠萝测试笔记
  • SpringMVC 实现多文件上传的两种方式及其效率比较

    springMVC实现 多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传。这两种方...

    冷冷
  • 视频加密的几种方式

    今天聊一聊视频加密,市场上现在很多关于视频加密的产品,大体上分为两种,一种是在线视频加密,一种是离线视频加密,下面分类介绍下

    点量小崔
  • Mac技巧:在MacOS上加密文件/文件夹的三种方式

    若要加密您的私密文件和文件夹,提高文件的安全性, macOS中还需要使用什么方法来加密?

    Mac精选
  • 内连接的两种方式

    在前面的文章中我们讲过两个概念,宽表和窄表,在现实业务中,数据库中很多表存储其实都是以窄表的形式来存储的,但是我们一般从数据库中获取信息的时候,都是需要同时从多...

    张俊红
  • 流的两种关闭方式

    用户2965768

扫码关注腾讯云开发者

领取腾讯云代金券