使用SpringBoot+easyPoi+LayUI实现文件以Excel格式批量上传下载

本文介绍了如何使用SpringBoot结合easyPoi和LayUI实现文件的Excel格式批量上传和下载。针对前端传Json字符串给后端导致的非法字符异常,提供了两种解决方案:修改SpringBoot的Tomcat版本和添加配置文件。同时,文章列举了批量下载过程中可能遇到的错误及解决办法,包括ERR_CACHE_READ_FAILURE和ajax下载无弹窗问题。
摘要由CSDN通过智能技术生成

首先看一下界面
在这里插入图片描述
如图所示,通过勾选多选框实现选中,点击批量下载会将数据以Excel的格式批量下载到本地

关于勾选之后是传id数组还是传整个勾选的对象数组,先说结论:
	 应该传的是id数组而不是对象数组 原因如下:
	 1. 我们为什么不传id?因为我们不想查询数据库。
	 2. 但是不查询数据库说明我们所需要打印的数据在前端界面已经展示
	    完全了,
	 3. 界面展示完全的话。我们可以通过直接通过前端把数据导出成
	    Excel表格下载到本地
	 4. 故 我们一般选择通过id数组传递数据 

结论是一回事,但是我两种都写了,传递id数组的方式比较简单。

传递id数组实现批量下载

传递对象数组实现批量下载

emmmmmm,选这种的和我一样都是狼灭
直接开始思路:

  1. 前端传什么给后端?

    应该传Json字符串
    [{“name”:“csq”,“sex”:“man”},
    {“name”:“lll”,“sex”:“woman”}]

  2. 后端的接收的相关问题
    正常接收的话会报错。非法字符问题
java.lang.IllegalArgumentException:Invalid character found 
in the request target. The valid characters are defined in
RFC 7230 and RFC 3986

翻译:非法数据异常:发现无效字符,有效的字符在RFC 7230和RFC 3986中定义

出现这个错误的原因是:我们在前后台交互的时候使用json格式的字段串参数,其中含有“{}”“[]”这些特舒符号,在高版本的tomcat(已知8版本以上报错,7貌似也报)中含有这些字符的请求会被拦截。
解决办法:

  1. 是修改springboot配置文件,降低tomcat版本
    打开本地maven仓库springboot父依赖配置,路径如:D:\mavenRepository\org\springframework\boot\spring-boot-dependencies
    打开2.1.4.RELEASE文件夹查看 spring-boot-dependencies-2.1.4.RELEASE.pom 里面的配置 搜索tomcat.version,显示<tomcat.version>9.0.17</tomcat.version>
    在这里插入图片描述
    把它改成8.5以下就可以了。但是不推荐,能用高版本就接着用呗,因此我采用方法二
  2. 在springboot中增加配置文件,交由spring工厂管理
@Configuration
public class TomcatConfig {
   

    @Bean
    public TomcatServletWebServerFactory webServerFactory() {
   
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        factory.addConnectorCustomizers((Connector connector) -> {
   
                connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
                connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
        });
        return factory;
    }
}
1. 前端代码

我的前端使用的是layui

<div class="layui-fluid">
    <div class="layui-row">
        </div>

        <button type="button" class="layui-btn" id="uploads">
            <i class="layui-icon">&#xe67c;</i>批量上传
        </button>

        <button type="button" class="layui-btn" id="download">
            <i class="layui-icon">&#xe67c;</i>批量下载
        </button>

        <!--table开始-->
        <table id="guruTable" class="layui-table-cell" lay-filter
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值