栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

vue + springboot 前后端分别导出excel两种方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

vue + springboot 前后端分别导出excel两种方法

vue + springboot 前后端导出excel两种方法
  • 前端导出excel
  • 后端导出excel

前端导出excel

一、导出步骤:

  1. 后端返回需要的数据列表。
  2. 前端去组装。
  3. 使用oper-excel.js函数导出。

二、附上oper-excel.js文件
链接:https://pan.baidu.com/s/1YzX6CWRHR1gVWxW80NO56w
提取码:65zi

三、前端实现过程

        

import {export_json_to_excel} from "@/components/common/oper-excel";
export default{
  data() {
    return {
    	saveTitle:['test1','test2','test3','test4','test5'],
    }
  },
  methods: {
			 //导出数据
            exportExcel(){
                this.$/confirm/i('确认导出文件吗?', '提示', {}).then(() => {
                    let fileName = formatDate(new Date(),'yyyyMMdd')+"-记录";
                    let pageNo = this.page;
                    let pageSize = 99999;
                    let type = this.filters.type;
                    let number = this.filters.number;
                    getTestList({pageNo, pageSize,type, number}).then( //从后端获取数据列表
                        (response) => {
                            this.list = response.body.content;                      
                        },
                        (response) => {
                            this.$message.error("导出文件失败!");
                        }
                    );           
                    this.getExcelData(this.list); //将列表组装到excel
                    export_json_to_excel(this.saveTitle, JSON.parse(JSON.stringify(this.excelData)),fileName);//导出
                })
            },
            // excel组装
            getExcelData(list){
                this.excelData = [];
                for(let i = 0;i < list.length;i++){
                    this.excelData[i] = new Array(11);
                    this.excelData[i][0] = list[i].test1;
                    this.excelData[i][1] = list[i].test2;
                    this.excelData[i][2] = list[i].test3;
                    this.excelData[i][3] = formatDate(new Date(list[i].time) , 'yyyy-MM-dd hh:mm');
                    this.excelData[i][4] = list[i].dime ? formatDate(new Date(list[i].dime ) ,'yyyy-MM-dd hh:mm') : '';
                }
            },
  }
}


		
后端导出excel

一、导出步骤

  1. 浏览器点击导出方法后直接从后端获取数据并组装,通过流写入返回给浏览器。
  2. 前端拿到数据后再简单封装一下

二、实现过程

  1. 前端代码:
   
methods: {
	//导出数据
            exportExcel(){
                  this.$/confirm/i('确认导出文件吗?', '提示', {}).then(() => {
                     let fileName = formatDate(new Date(),'yyyyMMdd')+"-记录";
                    let type = this.filters.type;
                    let number = this.filters.number;
                    getTestList({type, number}).then(
                        resp =>{
                            let blob = new Blob([resp.data],{type:"application/vnd.ms-excel;charset=UTF-8"});
                            let objUrl = URL.createObjectURL(blob);
                            let filelink = document.createElement('a');
                            filelink.href = objUrl;
                            filelink.download = '记录.xls';
                            filelink.click();
                        }
                   ).catch(response=>{
                       this.$message.error('导出文件出错!');
                   });
                })
            },
}
     
  1. 后端代码:

    1) controller层

@GetMapping("/export")
	public void exportList(
			@RequestParam(value = "type", required = false, defaultValue = "") final String type,
			@RequestParam(value = "number", required = false, defaultValue = "") final String number
	)throws Exception {
		service.exportList(type,number);

	}

2)service层

  //导出列表
    void exportList(String type,String number) throws Exception;

3)serviceImpl层

 @Override
    public void exportList(String type,String number) throws Exception {

        List resultList = testDao.findAllById(ids); //这步之前的省略,主要是获取导出的数据列表
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet("记录列表");
        int rowNo = 0;

        HSSFRow titleRow = sheet.createRow(rowNo++);

        for (int i = 0; i < excelFileCols.length; i++) {
            HSSFCell titleCell = titleRow.createCell(i);
            titleCell.setCellValue(excelFileCols[i]);
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm");
        for (Test test : resultList){               
            HSSFRow row = sheet.createRow(rowNo++);
            for (int i = 0; i < excelFileCols.length; i++) {
                HSSFCell cell = row.createCell(i);
                switch (excelFileCols[i]) {
                    case "测试1":
                        cell.setCellValue(test.getTest1());
                        break;
                    case "测试2":
                        cell.setCellValue(test.getTest2());
                        break;
                    case "测试3":
                        cell.setCellValue(test.getTest3());
                        break;              
                    default:
                        break;
                }
            }
        }

        try{
            String fileName =URLEncoder.encode( "test.xls","utf-8");
            httpResponse.setContentType("application/x-msdownload; charset=UTF-8");
            httpResponse.setHeader("Content-disposition", "attachment; filename=" + fileName);
            OutputStream os = httpResponse.getOutputStream();
            workbook.write(os);
            os.flush();
            os.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    private static final String[] excelFileCols = {
            "测试1",
            "测试2",
            "测试3"
    };

具体实现过程就这些。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/396592.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号