根据条件查询下载Excel表单(Java+Vue 及 Vue 两种方式)

2024-03-04 1108阅读

温馨提示:这篇文章已超过383天没有更新,请注意相关的内容是否还可用!

目录

  • 前言
  • 1. 基本知识
  • 2. 纯前端导入导出(Vue)
  • 3. 前后端(Vue + Java)

    前言

    如果想要下载好看的Excel推荐阅读:

    根据条件查询下载Excel表单(Java+Vue 及 Vue 两种方式)
    (图片来源网络,侵删)
    1. 详细讲解Java使用EasyExcel函数来操作Excel表(附实战)
    2. 详细讲解Java使用HSSFWorkbook函数导出Excel表(附实战)
    3. Python读取Excel的几种工具包(附Demo)

    详细的Java知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)

    此文通过后端你的查询前端,使用前端的下载参数下载!

    1. 基本知识

    this.$export.excel 是在 Vue.js 组件中使用的一个方法,通过 Vue.js 插件或 mixin 扩展到组件中的一个方法

    主要功能是将给定的数据导出为 Excel 文件

    参数包括:

    • 标题:Excel 文件的标题或名称
    • 列信息:导出的数据应该如何在 Excel 表格中排列,包括列名、宽度等
    • 数据:要导出的实际数据,可能是一个数组,每个元素代表一行数据,每行的元素按照列信息进行排列

      具体作用如下:

      • 灵活性:支持不同的选项,比如自定义标题、指定列的顺序和格式、处理数据以适应 Excel 的需求等
      • 用户友好:提供一种用户友好的方式来导出数据,使用户能够以熟悉的 Excel 格式保存和处理数据,而无需手动将数据从应用程序复制粘贴到 Excel 中

        2. 纯前端导入导出(Vue)

        导入:

        • 自定义样式以增强界面外观。

        • 添加了 .xlsx 文件的限制,只允许选择该类型的文件进行上传。

        • 添加了一些虚拟数据,以便在没有上传文件时也可以查看表格的展示效果。

        • 在 部分使用了 scoped,以确保样式仅在当前组件中生效,避免全局污染。

            
          选择要导入的 .xlsx 表格

          导入的数据

          import Vue from "vue"; import pluginImport from "@d2-projects/vue-table-import"; Vue.use(pluginImport); export default { data() { return { table: { columns: [], data: [], }, }; }, methods: { handleUpload(file) { this.$import.xlsx(file).then(({ header, results }) => { // 将表头作为列的标签和属性 this.table.columns = header.map((e) => { return { label: e, prop: e, }; }); // 演示用的虚拟数据 this.table.data = [ { id: 1, name: "John", age: 30, email: "john@example.com" }, { id: 2, name: "Jane", age: 28, email: "jane@example.com" }, { id: 3, name: "Doe", age: 35, email: "doe@example.com" }, ]; }); return false; }, }, }; .excel-import-demo { max-width: 600px; margin: 0 auto; } .upload-excel { margin-bottom: 20px; } .table-container { margin-top: 20px; }

          导出:

            

          数据导出为 Excel

          导出为 Excel
          import Vue from 'vue' import pluginExport from '@d2-projects/vue-table-export' Vue.use(pluginExport) export default { data() { return { table: { columns: [], data: [] } } }, methods: { exportExcel() { this.$export.excel({ columns: this.table.columns, data: this.table.data }).then(() => { this.$message('导出表格成功') }) } } } .excel-export-demo { max-width: 400px; margin: 0 auto; text-align: center; padding: 20px; } .header h2 { margin-bottom: 20px; } .footer { margin-top: 20px; font-size: 12px; }

          3. 前后端(Vue + Java)

          根据前面的一个框架,大致设计一个导出Excel

          通过点击按钮:

          handleExcel() {
            this.loading = true;
            queryAllForExcel( Object.assign(this.getQuery()) ).then(res=>{
              console.log();
              const  column = this.option.column;
              const  data = res.data.data;
              let opt = {
                title: 'EXCEL 下载',
                column: column,
                data: data
              };
              console.log(opt);
              this.$export.excel({
                title: opt.title || new Date().getTime(),
                columns: opt.column,
                data: opt.data
              });
            }).finally(()=>{
              this.loading = false;
            });
          },
          

          传输的条件如下:(以下为Demo)

          getQuery(){
            var mTime = this.formInline.maintenanceTimePicker;
            var aTime = this.formInline.acceptTimePicker;
            var js;
            // 多机种的多个搜索
            var newmodel = '';
            console.log(this.formInline.model);
            if(this.formInline.model){//添加检查
              for(var i=0;i
                if(i==0){
                  newmodel=this.formInline.model[i]
                }else{
                  newmodel=newmodel+'-'+this.formInline.model[i]
                }
              }
            }
            // 设备编号的多个搜索
            var nos = '';
            if(this.formInline.equipmentNo){ // 不为空的判断
              for(var i=0;i
                if(i==0){
                  nos=this.formInline.equipmentNo[i]
                }else{
                  nos=nos+'-'+this.formInline.equipmentNo[i]
                }
              }
            }
            if((mTime!=null&&(mTime.length!=1))&&(aTime!=null&&(aTime.length!=1))){
              js = {
                "equipmentNos": nos,
                "model":newmodel,
                "maintenanceType":this.formInline.maintenanceType,
                "maintenanceStartTime":moment(mTime[0]).format('YYYY-MM-DD HH:mm:ss'),
                "maintenanceEndTime":moment(mTime[1]).format('YYYY-MM-DD HH:mm:ss'),
                "acceptStartTime":moment(aTime[0]).format('YYYY-MM-DD HH:mm:ss'),
                "acceptEndTime":moment(aTime[1]).format('YYYY-MM-DD HH:mm:ss'),
              };
            }else if((mTime!=null&&(mTime.length!=1))&&aTime==null){
              js = {
                "equipmentNos": nos,
                "model":newmodel,
                "maintenanceType":this.formInline.maintenanceType,
                "maintenanceStartTime":moment(mTime[0]).format('YYYY-MM-DD HH:mm:ss'),
                "maintenanceEndTime":moment(mTime[1]).format('YYYY-MM-DD HH:mm:ss'),
              };
            }else if((aTime!=null&&(aTime.length!=1))&&mTime==null){
              js = {
                "equipmentNos": nos,
                "model":newmodel,
                "maintenanceType":this.formInline.maintenanceType,
                "acceptStartTime":moment(aTime[0]).format('YYYY-MM-DD HH:mm:ss'),
                "acceptEndTime":moment(aTime[1]).format('YYYY-MM-DD HH:mm:ss'),
              };
            }else{
              js = {
                "equipmentNos": nos,
                "model":newmodel,
                "maintenanceType":this.formInline.maintenanceType,
              }; 
            }
            console.log(js);
              return js;
          },
          
            return request({
              url: '/api/blade-equipment/maintenanceorder/queryAllForExcel',
              method: 'get',
              params: {
                ...params,
              },
              timeout:18000,
            })
          }
          
          	QueryWrapper
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]