使用EasyExcel导入、根据模板下载(附前后端代码)

这篇具有很好参考价值的文章主要介绍了使用EasyExcel导入、根据模板下载(附前后端代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

easyexcel模板下载,javascript,ajax,前端

easyexcel模板下载,javascript,ajax,前端

easyexcel模板下载,javascript,ajax,前端

easyexcel模板下载,javascript,ajax,前端

使用以上导包如果报错 NoClassDefFoundError,可能需要引入cglib包

easyexcel模板下载,javascript,ajax,前端

 1、excel的导入

前端代码:

:easyexcel模板下载,javascript,ajax,前端

由于前端type="file"的样式固定,可以隐藏input,通过其他按钮点击触发上传,用户上传文件后input的值发生变化触发change事件调用ajax

	$('#fileId').change(function(){
			//获取用户上传文件
			var files = $('#fileId')[0].files
			var i_type = 0;
			//定义传参格式
			var data = new FormData();
			data.append('avatar', files[0]);
			data.append('i_type',i_type);
			$.ajax({
				url: cp + 'mgt/depotwares/import.do',
				type: 'POST',
				data: data,
				cache: false,
				processData: false,
				contentType: false,
				success:function (data) {
					var result = JSON.parse(data);
					$("#fileId").val('');
					if(result.s_code == "000000"){
						var sucess = result.o_data[0]
						var fail = result.o_data[1]
					layer.confirm(("导入成功! 成功:"+sucess+",失败:"+fail),{
						btn: ['关闭','下载失败信息'] //按钮
					}, function(){//是
						layer.closeAll();
					},function(){//
						let downloadurl="http://localhost:8081/fhxhcps//mgt/depotwares/downloadfail.do";
						let label = $("<a>");
						label.prop("href",downloadurl);
						$("body").append(label)
						label[0].click();
						label.remove();
					});
					}else{
						layer.msg(result.s_msg)
					}
				}
			});

		});

 后端代码:

controller层接收

	public void WaresBatchUpdate(HttpServletRequest request,
								 HttpServletResponse response,
								 @RequestParam(required = false, value = "avatar") MultipartFile filename,
								 HttpSession session,  Model model,String i_type) throws IOException

 实现类:

	ResultMap resMap = new ResultMap();
		//更新条数结果返回
		List list = new ArrayList();
		//记录所有excel数据
		List lists = new ArrayList();
		//用于写入保存失败数据
		List<ExcelVO> failList = new ArrayList();
		List<PvdSettleVO> pvdfailList = new ArrayList<>();
		List<IWaresVO> iWaresList = new ArrayList<>();
		//记录成功条数
		int sucess = 0;
		//记录失败条数
		int fail = 0;
		//判断当前修改税务编码还是供应商
		Workbook workbook = null;

  Properties properties = PropertiesUtil.load("pdf_config/exportPdf.properties");
        String wordGenerDir = properties.getProperty("excel.taxno.savepath");
        String name = Str(userMap.get("s_name"),"");
        String sUser = Str(userMap.get("s_user"),"");
        Date now = new Date();
        SimpleDateFormat outFormat = new SimpleDateFormat("yyyyMMddHHmmss");
        String time = outFormat.format(now);
        String newFile = name+sUser+"DT"+time +file.getOriginalFilename();
        String path2 = wordGenerDir+newFile;

        ResultMap resMap = new ResultMap();
        File foler = null;
        // 读取excel文件
        FileInputStream in = null;
        // 获取工作簿
        Workbook workbook = null;
        //获取路径
        foler = new File(path2);
        String path = foler.getAbsolutePath();
        String filetype = path.substring(path.lastIndexOf("."));

        try {

            file.transferTo(foler);
            File dest = new File(path);
            in = new FileInputStream(path);
            if (!foler.getParentFile().exists()) {
                //创建
                foler.getParentFile().mkdirs();
            }
            if (filetype.equals(".xls")) {
                workbook = new HSSFWorkbook(in);
            } else if (filetype.equals(".xlsx")) {
                workbook = new XSSFWorkbook(in);
            } else {
                resMap.setS_code(Constants.RES_MSG_ERROR);
                resMap.setS_msg("文件类型必须是xls或xlsx:" + file.getOriginalFilename());
                dest.delete();
                return resMap;
            }
        }catch (Exception e){
            System.out.println("文件异常");
        }finally {
            try {
                if (in != null) {
                    in.close();
                }
                if (workbook != null) {
                    workbook.close();
                }

            } catch (IOException e) {
                resMap.setS_msg("关闭流失败");
            }
        }
        try {
			//获取sheet1
			Sheet sheet = workbook.getSheetAt(0);
			//获取表中内容
			int rowCount = sheet.getPhysicalNumberOfRows();
			for (int rowNum = 1; rowNum < rowCount; rowNum++) {
				String value1 = "";
				String value2 = "";
				String value3 = "";
				Row rowData = sheet.getRow(rowNum);
				Map map = new HashMap();
				if (rowData != null) {
					Cell cell1 = rowData.getCell(0);
					Cell cell2 = rowData.getCell(1);
					Cell cell3 = rowData.getCell(2);
					value1 = ExcelUtils.getCellValue(cell1);
					value2 = ExcelUtils.getCellValue(cell2);
					value3 = ExcelUtils.getCellValue(cell3);
					map.put("col1", value1);
					map.put("col2", value2);
					map.put("col3", value3);
					lists.add(map);
				}
			}


				//excel写入未导入成功信息
                    //repath即为存放文件路径(绝对路径+名称)
					ExcelWriterBuilder write = EasyExcel.write(repath);
					ExcelWriterSheetBuilder sheet1 = write.sheet();
					sheet1.doWrite(failList);

2.Excel的模板下载

这里用的是在本地下载文件,指定一个文件路径创建excel模板,通过流的方式直接下载文章来源地址https://www.toymoban.com/news/detail-616350.html

前端代码:直接通过访问接口方式建立下载链接

$("#downloadWare").click(function () {
			$.ajax({
				url: cp + 'mgt/depotwares/downloadWareTemplete.do',
				method: 'get',
				type:"application/vnd.ms-excel",
				responseType:"blob",
				success: function(data){
					let downloadurl="http://localhost:8081/depotwares/downloadWareTemplete.do";
					let label = $("<a>");
					label.prop("href",downloadurl);
					$("body").append(label)
					label[0].click();
					label.remove();
					layer.msg("下载成功")
				}
			})
		})

后端代码:

try {
				// path是指下载的文件的路径。
				File file = new File(ExcelUtils.getFolerPath());
				// 取得文件名。
				String filename = file.getName();
				// 以流的形式下载文件。
				InputStream fis = new BufferedInputStream(new FileInputStream(ExcelUtils.getFolerPath()));
				byte[] buffer = new byte[fis.available()];
				fis.read(buffer);
				fis.close();
				// 清空response
				response.reset();
				// 设置response的Header
			if(request.getHeader("user-agent").toLowerCase().indexOf("firefox")>-1){
				response.setHeader("Content-Disposition","attachment;filename=" +new String(filename.getBytes("utf-8"),"ISO-8859-1"));
			}else {
				response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "utf-8"));
			}
				response.addHeader("Content-Length", "" + file.length());
				OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
				response.setContentType("application/octet-stream");
				toClient.write(buffer);
				toClient.flush();
				toClient.close();
		} catch (Exception e) {
			response.reset();
			response.setContentType("application/json");
			response.setCharacterEncoding("utf-8");
			resMap.setS_code(Constants.RES_CODE_ERROR);
			resMap.setS_msg(Constants.RES_MSG_ERROR);
	
		}

到了这里,关于使用EasyExcel导入、根据模板下载(附前后端代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【前端】Vue中引入excel模板并下载以及XLSX使用

    模板存放位置 src/assets/excelTemplate/模板.xls 安装模块包 新增配置,在vue.config.js中,自己比较一下,最后一段新增的chainWebpack 即可将模板下载到本地 我使用XLSX的场景,在我上传excel的时候,我需要获取它的表头以及里面的数据进行渲染到表格中,在我编辑的时候需要请求Exce

    2024年02月21日
    浏览(47)
  • 2023版IDEA的下载、安装、配置、快捷键、模板、插件与使用

    🎉 为什么会有这篇教程: 熟悉 IDEA 并能灵活熟练使用 IDEA 能极大提高您的开发效率!!! 📍 本文教程基于当前 idea 的最新版本 2023.2.2 。 📍 本文教程的所有操作图片均是实操测试截图或 gif 动态演示,合计 314 张图片,呈现的截图使用的 IDEA 的 Dark 主题。 📍 您的任何设

    2024年02月08日
    浏览(119)
  • 服务器端模板引擎art-template的下载和使用

    art-lemplate是新一代高性能JavaScript模板引擎,它可以将数据与HTML模板更加友好地结合起来,省去烦琐的字符串拼接,使代码更易于维护。 art-template模板引擎既可以在服务器端使用,也可以在浏览器端使用。此处仅讲解art-template模板引擎在服务器端的使用。art-template模板引擎的

    2024年02月08日
    浏览(49)
  • IDEA2022版教程上(下载、卸载、安装、新建Project、jdk设置、详细设置、新建/导入/删除普通java模块、修改模块名、同时打开多个工程、常用代码模板:非空判断,遍历,输出语句快捷键)

    初学Java语言,熟悉了记事本、EditPlus、NotePad++或Sublime Text3等简易开发工具的Java初学者 熟练使用其他Java集成开发环境(IDE),需要转向IDEA工具的Java工程师们 关注IDEA各方面特性的Java程序发烧友、爱好者 【注】JetBrains官方说明: 尽管我们采取了多种措施确保受访者的代表性

    2024年02月07日
    浏览(69)
  • .net core使用Html模板转PDF文件并下载的业务类封装

    前言:我这里文件下载的模板选型优先考虑html模板,上手容易,前后端通用,有了模板后就需要有转换了,html转PDF采用第三方包:DinkToPdf(1.0.8),下面是代码核心类:   重点:html转PDF的三方包有很多,我目前采用的是支持跨平台(windows和linux)的包源:DinkToPdf,这里提一嘴

    2024年02月09日
    浏览(97)
  • JAVA使用POI对Word docx模板文件替换数据工具类并通过浏览器下载到本地

    需求:需要上传一个带有占位符的模板至数据库保存,然后解析模板的占位符,通过类计算结果替换模板中的占位符,并且保存至本地 难点:1.由于我数据库保存是本地保存,并没有path 所以获取模板的path是个难点 2.如何使用计算类,由于我的类是和占位符绑定的,什么样的

    2024年02月16日
    浏览(48)
  • 免费ppt模板下载的网站推荐

    推荐一个免费ppt模板下载的网站 布丁花网_背景图片素材免费下载的网站 (budinghua.com) 这个网站PPT素材模板很多,也有课件、背景等素材,风格类型也很多,商务风、中国风、卡通风、简约风这里都能找到。重点是全部都能免费下载,无需注册。 网站不仅有ppt模板免费下载,

    2024年02月11日
    浏览(54)
  • Java下载excel模板文件

    最近做了一个导入Excel的功能,需求: 先提供一个下载Excel模板的功能。 用户下载好模板后,可以在模板文件当中填写要上传的内容,填写完过后再进行导入Excel,然后将用户填写的数据保存到数据库当中。 1.将模板放到resources目录下,尽量创建一个专门的文件夹来存放模板

    2024年02月15日
    浏览(56)
  • 下载IEEE期刊Latex模板步骤

    Google或百度检索想要下载什么期刊的Latex模板,或直接在IEEE官网IEEE Xplore搜索期刊名称,下面以TASE,IEEE Transactions on Automation Science and Engineering期刊为例。 1.进入TASE期刊的主页 ,这里可以看到期刊的主编信息,点击 Submission Guidelines 2.在搜索框输入templates,选择 IEEE Article Tem

    2023年04月24日
    浏览(45)
  • .net core使用Html模板转PDF文件并下载的业务类封装_基于DinkToPdf_跨平台_windows+linux

    前言:我这里文件下载的模板选型优先考虑html模板,上手容易,前后端通用,有了模板后就需要有转换了,html转PDF采用第三方包:DinkToPdf(1.0.8),下面是代码核心类:   重点:html转PDF的三方包有很多,我目前采用的是支持跨平台(windows和linux)的包源:DinkToPdf,这里提一嘴

    2024年02月09日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包