纯前端实现表格的导入 [一对多的情况进行导出]

1.通过 xlsx 插件进行

      通过npm命令下载后  import * as XLSX from 'xlsx';  引入

2.直接上代码

 //导出表格
     DownloadExcel() {
     // 定义Excel表头
     const headers = [
       '合同名称', '客户联系人', '客户名称', '关联机会', '关联报价单', '负责人', '协同人', '签订人', '签订日期', '到期日期', '合同状态', '产品合计',
       '整单折扣率', '其他费用', '优惠金额', '合同金额', '合同类型', '收款方式', '发货状态', '物流编号', '退货数', '已收金额', '未收金额', '开票金额', '未开票金额',
       '开票状态', '发货单', '签收单', '装机单', '培训单', '产品名称', '产品编号', '规则', '产品条码', '销售单位', '数量', '单价', '折扣', '售价', '售价小计'
     ];
     const flattenedData = [];

     this.Alladdstatus.forEach(item => {
       if (item.details && Array.isArray(item.details) && item.details.length > 0) {
         // 如果主对象包含详情数组,为每个详情项创建一行数据
         item.details.forEach(detailItem => {
           const row = [
             item.name || '',
             item.customerContact || '',
             item.clientName || '',
             item.associationOpportunity || '',
             item.associationSheet || '',
             item.headerInfo || '',
             item.collaboratorInfo || '',
             item.signerName || '',
             item.signingDate || '',
             item.dueDate || '',
             item.contractStatus || '',
             item.totalProduct || '',
             item.singleDiscount || '',
             item.otherExpenses || '',
             item.discountAmount || '',
             item.contractAmount || '',
             item.contractType || '',
             item.paymentMethod || '',
             item.shippingStatus || '',
             item.LogisticsId || '',
             item.returnQuantity || '',
             item.receivedAmount || '',
             item.outstandingAmount || '',
             item.invoiceAmount || '',
             item.uninvoicedAmount || '',
             item.invoiceStatus || '',
             item.deliveryNote.length > 0 ? '有' : '',
             item.receipt.length > 0 ? '有' : '',
             item.installationOrder.length > 0 ? '有' : '',
             item.trainingForm.length > 0 ? '有' : '',
             detailItem.produceName || '',
             detailItem.productId || '',
             detailItem.spec || '',
             detailItem.produceCode || '',
             detailItem.number || '',
             detailItem.producePrice || '',
             detailItem.price || '',
             detailItem.discount || '',
             detailItem.salePrice || '',
             detailItem.saleTotalPrice || ''
           ];
           flattenedData.push(row);
         });
       } else {
         // 如果没有详情数组,添加一行只有主对象信息的数据
         const row = [
           item.name || '',
           item.customerContact || '',
           item.clientName || '',
           item.associationOpportunity || '',
           item.associationSheet || '',
           item.headerInfo || '',
           item.collaboratorInfo || '',
           item.signerName || '',
           item.signingDate || '',
           item.dueDate || '',
           item.contractStatus || '',
           item.totalProduct || '',
           item.singleDiscount || '',
           item.otherExpenses || '',
           item.discountAmount || '',
           item.contractAmount || '',
           item.contractType || '',
           item.paymentMethod || '',
           item.shippingStatus || '',
           item.LogisticsId || '',
           item.returnQuantity || '',
           item.receivedAmount || '',
           item.outstandingAmount || '',
           item.invoiceAmount || '',
           item.uninvoicedAmount || '',
           item.invoiceStatus || '',
           item.deliveryNote.length > 0 ? '有' : '',
           item.receipt.length > 0 ? '有' : '',
           item.installationOrder.length > 0 ? '有' : '',
           item.trainingForm.length > 0 ? '有' : '',
           '', '', '', '', '', '', '', '', '', '', ''  // 详情项相关的列为空
         ];
         flattenedData.push(row);
       }
     });
      const worksheet = XLSX.utils.aoa_to_sheet([headers, ...flattenedData]);
      const workbook = XLSX.utils.book_new();
      XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
      XLSX.writeFile(workbook, '合同详细.xlsx');
    },

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 1、基于SpringBoot+Vue搭建的多功能体育场地智能管理系统源码+数据库+项目说明.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于SpringBoot+Vue搭建的多功能体育场地智能管理系统源码+数据库+项目说明.zip # Stadium-management-system---体育馆场地管理系统-2.0 ## 项目说明 该项目为体育馆场地管理系统2.0版本,使用SpringBoot+Vue搭建,MyBatis+RabbitMq+Spring Security+锁+邮件服务+定时任务等技术。 * 该项目在1.0的基础上进行的改进,前后端采用json数据格式交互,实现前后端分离 * 并不是完全的前后端分离,只是用了vue做模板引擎,jquery+vue * 该项目使用了Thymeleaf,只是为了跳转更方便 * 该项目分为两个部分,都是对上个版本的重构,使用了两个端口,只是操作的同一个数据库 * 这里订单ID生成使用了雪花算法,uuid也行 --- ## 项目截图 >前台用户部分 ![image](https://github.com/Suarge/gms-2.0/blob/master/readm_photo/1.png) ![image](https://github.com/Suarge/gms-2.0/blob/master/readm_photo/2.png) ![image](https://github.com/Suarge/gms-2.0/blob/master/readm_photo/3.png) ![image](https://github.com/Suarge/gms-2.0/blob/master/readm_photo/4.png) >后台管理员部分 ![image](https://github.com/Suarge/gms-1.0/blob/master/readme_photo/6.png) ![image](https://github.com/Suarge/gms-1.0/blob/master/readme_photo/7.png) ![image](https://github.com/Suarge/gms-1.0/blob/master/readme_photo/8.png) ## 功能 用户部分: * 登录、注册、修改密码、注销登录 * 首页各种加载、场馆类型展示、通知信息展示、场馆详情展示 * 模糊查询订单 * 打印订单 新增: * 异步邮件发送 * 事务控制 * 双重检验锁控制线程安全 * 异步邮件发送 管理员部分: * 登录、注销 * 总览 * 场地管理 * 预约查询 * 通知发布 * 情况分析 ## 技术栈 * SpringBoot+Vue搭建 * MyBatis+mysql+durid * 消息队列RabbitMq * 定时任务 * Spring Security * 线程同步锁 * apache的poi文件导出api ## 改进 * 由于前后端分离,项目加载速度快了很多,如果页面加载增加redis作为缓存会更好 * 使用了更好地框架进行搭建,更方便简单 * 项目的主要业务逻辑增加,主要是加锁和异步邮件,以及事务控制的问题(这里都在一个代码里面) * 主要的改造思路在项目中的**改造思路**文件夹中 ## 安装 ### 1、下载项目到本地 ```xml git clone https://github.com/Suarge/gms-2.0.git ``` ### 2. 导入项目 该项目是用idea创建的,可以直接导入到idea中 ### 3.设置durid连接数据库 * 将`gms.sql`中的sql文件运行,并修改对应的配置文件durid * 具体设置在`application.properties`里修改,如果出现乱码请修改编码 ### 4.修改application.properties * 在`application.properties`配置文件中修改成自己的qq和stmp的密码 * 其他信息可以根据自己需要修改 ### 5.下载rabbitmq消息队列 我使用的是**rabbitmq3.6.9** 和**erlang8.3**直接在windows上安装的 ### 4.启动项目 * 因为前端是ajax访问的,所以日期不对的话下面的场馆表格是不会加载的,gms.sq
2.0系统介绍 本系统是根据人们在日常生活中的实际需求而开发的,完全能够实现管理者对超市的智能化管理,通过本系统可以达到以下目标: 一、             系统最大限度地实现了易安装性、易维护性和易操作性。 二、             系统运行稳定,安全可靠,分服务器端,门店端,适合于各类用户 需求和对自己扩展门店需求等管理。 三、             操作灵活,界面友好,充分满足中小型超市的进销存管理需求 四、             实施规范的进、销、存一体化业务管理。 五、             强大的库存预警功能,尽量避免损失。 六、             图形化数据分析。 七、             强大的cha询分析功能。 八、             灵活、细分的权限控制功能,精细到模块的基本操作(添加,删除、导入导出、打印等),总部和门店随时实时的消息沟通和命令下达。 九、             强大的报表功能,让您随时了解超市经营情况,随时按你需求定做 2.1开发环境 本系统开发环境如下: 开发平台:Microsoft SQL Server 2005 运行平台:Windows XP/Windows 7/8/10/Windows server2008/server 2012 分辨率:最低效果要求后台1024*168  前端:800*600 开发语言:易语言 关系统数据库:Microsoft SQL Server 2005 2.1具体模块介绍 1.  参数设置(系统的一个特色,作者自己独创): (1) 参数可以控制系统大部分的操作,包括一些常用的下拉框,系统变量等等; (2) 参数可以根据用户需求定义一些功能的改变,比如说促销,会员管理等等; (3) 包括自定义参数的设计; 2.  表头设置(作者独创): (1) 表头的文字的更改,可以按照自己的喜好; (2) 固定宽度的设置等等; (3) 顺序的更改都可以按照自己喜好设置; 3.  基础信息的设计功能包括: (1) 商品分类设置,商品档案的管理; (2) 客户分类和客户档案管理; (3) 部门设置,角色的设置; (4) 仓库的设置,门店的设置; (5) 管理人员分类和档案维护; (6) 模块管理等; (7) 单据规则自定义设计; (8) 日志操作等等; 4.  商品销售管理模块的功能包括: (1) 前端收银管理; (2) 后台分销、批发的管理; (3) 顾客提货等等; 5.  采购管理 (1) 进货预订单; (2) 进货单集分析; (3) 验收单; (4) 退货单; (5) 各类cha询及分析图表; 6.  库存管理模块的功能包括: (1) 库存报警; (2) 多条件进行商品库存cha询; (3) 库存变化、批次的管理等 7.  系统维护 (1) 密码修改; (2) 前台收银管控; (3) 对上线机器管控,下线、消息传递、拉黑等等 8.  会员管理 (1) 会员分类; (2) 会员档案; (3) 会员卡; (4) 储值卡; (5) 促销 (6) 会员分析等等 9.  决策分析(就是cha询的问题,源码只有一个模块示范,其它没有开发) (1) 各位报表; (2) 进货、销售、库存等汇总表,明细表各位大大小小的报表 (3) 前端收银方面的报表 (4) 门店的报表等等 客户Duan源码1:链接:https://pan.baidu.com/s/1gfOsRNt  密码: 9fcu 由于大于3M无法上传,上传到百度网盘 客户Duan辅Zhu文件:链接:https://pan.baidu.com/s/1slyWc0X  密码: ubrj服务端:链接:https://pan.baidu.com/s/1qXY9IR6 密码: ex1d 模块:链接:https://pan.baidu.com/s/1o8vE3sY  密码: bhdx数据库:链接:https://pan.baidu.com/s/1cln1q2 密码: i765 ,备份要用mssql2014版本才能恢复,文本的mssql2005及以上都可以使用。完整的数据库文件用到的表格控件:链接:https://pan.baidu.com/s/1i5gpxTr 密码: d2m8 怎么注册请百度方法吧。
好的,以下是一个利用 js-xlsx 实现 Excel 文件导入导出功能的示例: 首先在 HTML 文件中引入 js-xlsx 库: ```html <script src="https://cdn.jsdelivr.net/npm/xlsx/dist/xlsx.full.min.js"></script> ``` 然后在 JavaScript 文件中编写以下代码: ```javascript // 导出 Excel 文件 function exportExcel(data, filename) { const ws = XLSX.utils.json_to_sheet(data); const wb = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(wb, ws, 'Sheet1'); XLSX.writeFile(wb, `${filename}.xlsx`); } // 导入 Excel 文件 function importExcel(file, callback) { const reader = new FileReader(); reader.readAsArrayBuffer(file); reader.onload = (e) => { const data = new Uint8Array(e.target.result); const workbook = XLSX.read(data, { type: 'array' }); const sheetName = workbook.SheetNames[0]; const worksheet = workbook.Sheets[sheetName]; const result = XLSX.utils.sheet_to_json(worksheet, { header: 1 }); callback(result); }; } ``` 其中,exportExcel 函数用于将数据导出为 Excel 文件,参数 data 为要导出的数据,filename 为导出的文件名。 importExcel 函数用于导入 Excel 文件,参数 file 为要导入的文件,callback 为导入成功后的回调函数,回调函数的参数 result 为导入的数据。 示例代码中使用了 FileReader 对象读取文件内容,然后使用 js-xlsx 库解析 Excel 文件并将数据转化为 JSON 格式。 使用示例: ```javascript const data = [ { name: '张三', age: 20, gender: '男' }, { name: '李四', age: 22, gender: '女' }, { name: '王五', age: 25, gender: '男' }, ]; exportExcel(data, 'test'); // 导出 Excel 文件,文件名为 test.xlsx const inputElement = document.getElementById('input-file'); inputElement.addEventListener('change', (e) => { const file = e.target.files[0]; importExcel(file, (result) => { console.log(result); // 输出导入的数据 }); }); ``` 在 HTML 文件中添加一个文件选择框: ```html <input type="file" id="input-file"> ``` 用户选择一个 Excel 文件后,调用 importExcel 函数导入数据,并在回调函数中处理导入的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值