ajax上传execl + easyexecl解析execl

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>上传下载Execl</title>
<script src="../../js/jquery-1.9.1.min.js"></script>
</head>
<style>
.outer {
height: 200px;
/*border: 1px #F2DEDE solid;*/
} .flex {
display: flex;
} .ai-c {
align-items: center;
} .jc-c {
justify-content: center;
} input {
margin-top: 10px;
} .loading {
position: relative;
} .loading:after {
content: "加载中...";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
box-sizing: border-box;
padding: 100px;
background: rgba(0, 0, 0, .6) url(../../img/loading.gif) no-repeat center 60px;
color: #fff;
text-align: center;
} </style>
<body> <div>上传下载Execl:</div>
<div id="mainDiv" class="outer flex ai-c jc-c">
<div>
<a href="/download" download="测试">下载Execl模板</a><br/> <label for="file">上传Execl:</label>
<input type="file" id="file" name="file" value="" multiple><br/> <input type="submit" value="上传" onclick="submit()">
</div>
</div> <script> var submit = function () {
$("#mainDiv").addClass("loading"); var formData = new FormData();
formData.append('file', $('#file')[0].files[0]);
formData.append('file', $('#file')[0].files[1]); $.ajax({
type: "post",
url: "/upload2",
cache: false,
processData: false,
contentType: false,
data: formData,
success: function (json) {
$("#mainDiv").removeClass("loading");
alert("上传成功");
}, error: function (xhr) {
$("#mainDiv").removeClass("loading");
alert("错误提示: " + xhr.status + " " + xhr.statusText);
}
}); } </script>
</body>
</html>
    @ApiOperation("下载execl")
@GetMapping("download")
public void download(HttpServletResponse response) throws IOException {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
String fileName = URLEncoder.encode("测试", "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
EasyExcel.write(response.getOutputStream(), DownloadData.class).sheet("模板").doWrite(data());
} @ApiOperation("文件上传")
@PostMapping("upload")
@ResponseBody
public String upload(MultipartFile file) throws IOException {
EasyExcel.read(file.getInputStream(), UploadData.class, new UploadDataListener(uploadDAO)).sheet().doRead();
return "success";
} @ApiOperation("多文件上传")
@PostMapping("upload2")
@ResponseBody
public String upload2(MultipartHttpServletRequest request) throws IOException {
List < MultipartFile > files = request.getFiles("file");
for (MultipartFile file : files) {
EasyExcel.read(file.getInputStream(), UploadData.class, new UploadDataListener(uploadDAO)).sheet().doRead();
}
return "success";
}
EasyExcel使用参考官方文档:https://alibaba-easyexcel.github.io/index.html

上传下载execl的更多相关文章

  1. Struts的文件上传下载

    Struts的文件上传下载 1.文件上传 Struts2的文件上传也是使用fileUpload的组件,这个组默认是集合在框架里面的.且是使用拦截器:<interceptor name=" ...

  2. 基于Spring Mvc实现的Excel文件上传下载

    最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库.因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例. 基础框架 之前曾经介绍过一个最简单的spring ...

  3. Android okHttp网络请求之文件上传下载

    前言: 前面介绍了基于okHttp的get.post基本使用(http://www.cnblogs.com/whoislcj/p/5526431.html),今天来实现一下基于okHttp的文件上传. ...

  4. 用Canvas+Javascript FileAPI 实现一个跨平台的图片剪切、滤镜处理、上传下载工具

    直接上代码,其中上传功能需要自己配置允许跨域的文件服务器地址~ 或者将html文件贴到您的站点下同源上传也OK. 支持: 不同尺寸图片获取. 原图缩小放大. 原图移动. 选择框大小改变. 下载选中的区 ...

  5. Javaweb学习笔记——上传下载文件

    一.前言 在Javaweb中,上传下载是经常用到的功能,对于文件上传,浏览器在上传的过程中是以流的过程将文件传给服务器,一般都是使用commons-fileupload这个包实现上传功能,因为comm ...

  6. 服务器文件上传下载(XShell+Xftp)

    1.下载XShell安装包+Xftp安装包.百度网盘(XShell):https://pan.baidu.com/s/1eR4PFpS 百度网盘(Xftp):https://pan.baidu.com ...

  7. springmvc 上传下载

    springmvc文件上传下载在网上搜索的代码 参考整理了一份需要使用的jar.commons-fileupload.jar与commons-io-1.4.jar 二个文件 1.表单属性为: enct ...

  8. 简单Excel表格上传下载,POI

    一.废话 Excel表格是office软件中的一员,几乎是使用次数最多的办公软件.所以在java进行企业级应用开发的时候经常会用到对应的上传下载便利办公. 目前,比较常用的实现Java导入.导出Exc ...

  9. JAVA中使用FTPClient上传下载

    Java中使用FTPClient上传下载 在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在c ...

随机推荐

  1. 安卓QQ聊天记录导出、备份完全攻略

    发到知乎竟然被删掉,我也不知道我到底违反了哪条.唉,别人的毕竟是别人的.虽然博客园也是别人的 前言 我对聊天记录的备份比较执着,也在这上面折腾过不少.碰到过不少令人头疼的麻烦,在这里分享一下经验. 关 ...

  2. python中的特殊注释#todo与#type

    0904自我总结 python中的特殊注释 一.#TODO 这个注释用来快熟找到内容 #todo这里的todo不用区分大小写 写法标记的位置,#todo 备注内容 二.#type a = 1 #typ ...

  3. wordpress调用文章摘要,若无摘要则自动截取文章内容字数做为摘要

    以下是调用指定分类文章列表的一个方法,作者如果有填写文章摘要则直接调用摘要:如果文章摘要忘记写了则自动截取文章内容字数做为摘要.这个方法也适用于调用description标签 <ul> & ...

  4. 磁盘提示“X:拒绝访问”问题解决

    cacls "D:\*.*" /T /E /G Administrators:F cacls "D:\*.*" /T /E /G Users:F cacls & ...

  5. 品优购项目 单表过程 乒乓过程 入口 MyBatis逆向工程 dubbo框架搭建 品牌表CRUD bug集锦

  6. 前段大数据传输 压缩解压 pako

    我已经找到了解决的办法:用pako.inflate(); 在页面引入链接即可调用pako

  7. react 沉思录

    react = Virtual DOM + component + data flow + jsx 核心是Virtual DOM结构的状态维护.渲染机制及UI系统的DOM组织功能: 基于Virtual ...

  8. Connected Component in Undirected Graph

    Description Find connected component in undirected graph. Each node in the graph contains a label an ...

  9. py3 与 Django 连接数据库: No module named 'MySQLdb'

    问题 在使用 Django 连接 MySQL 数据库的时候,出现了错误 django.core.exceptions.ImproperlyConfigured: Error loading MySQL ...

  10. [HNOI2016]序列 CDQ+DP

    [HNOI2016]序列 CDQ 链接 loj 思路 一个点最小变为l,最大变为r,不变的时候为v 那么j能在i前面就要满足. \(j<i\) \(r[j]<=v[i]\) \(v[j]& ...