首页 > 其他分享 >VueJs导出Excel,插件 xlsx

VueJs导出Excel,插件 xlsx

时间:2024-06-20 16:23:14浏览次数:8  
标签:插件 slice const VueJs timeStamp Excel let headerColumns dateObj

1.安装组件:cnpm install xlsx --save
2.新建一个辅助ts、js文件 我的excelUtil.ts 注意:新版本的插件导入写法变了:import * as XLSX from 'xlsx'

import { timestampToDateString } from '@/common/dateUtil'
import * as XLSX from 'xlsx'

//headerColumns:属性列表
//headerNames:属性名称列表,要和headerColumns顺序一致。
//dateColumns:headerColumns中要从long转换为date的列集合
//dataTable:数据源
//fileName:导出的excel文件名称
export function exportExcel(headerColumns: string[], headerNames: string[], dateColumns: string[], dataArr: any, fileName: string) {
    //复制一个新数组出来,不能操作原数组。
    // let dataArr = dataTable.slice();
    //要导出的数据
    let dataArrExport = [];
    for (let k = 0; k < dataArr.length; k++) {
        let itemArr = [];
        let dataItem = dataArr[k];
        for (let m = 0; m < headerColumns.length; m++) {
            let key = headerColumns[m];
            if (dataItem.hasOwnProperty(key)) {
                // 对象具有该属性
                let v = dataItem[key] + '';
                //日期要转换
                if (dateColumns.indexOf(key) > -1) {
                    v = timestampToDateString(parseInt(v));
                }
                itemArr.push(v);
            } else {
                // 对象不具有该属性
                itemArr.push('');
            }
        }
        dataArrExport.push(itemArr);
    }
    dataArrExport.unshift(headerNames);//在开端添加一个元素 表头
    const ws = XLSX.utils.aoa_to_sheet(dataArrExport);
    const wb = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
    XLSX.writeFile(wb, fileName);
}

日期辅助dateUtil.js

//日期戳转日期字符串:yyyy-MM-dd HH:mm:ss
export const timestampToDateString = (v: number) => {
    if (v == null) {
        return '';
    } else {
        const dateObj = new Date(v); // 创建Date对象
        const year = dateObj.getFullYear(); // 获取年份
        const month = ("0" + (dateObj.getMonth() + 1)).slice(-2); // 获取月份,并补零
        const day = ("0" + dateObj.getDate()).slice(-2); // 获取日期,并补零
        const hour = ("0" + dateObj.getHours()).slice(-2); // 获取小时,并补零
        const minute = ("0" + dateObj.getMinutes()).slice(-2); // 获取分钟,并补零
        const second = ("0" + dateObj.getSeconds()).slice(-2); // 获取秒,并补零
        return `${year}-${month}-${day} ${hour}:${minute}:${second}`; // 返回转换后的日期格式
    }
}

export const timestampToDateShortString = (v: number) => {
    let fullDateStr = timestampToDateString(v);
    if(fullDateStr != ''){
        fullDateStr = fullDateStr.substring(0,11);
    }
    return fullDateStr;
}

//获取时间戳
export function getNowTimeSpan() {
    return new Date().getTime();//.toString()
}

//获取时间戳
export function getDateTimeSpan(date: Date) {
    return date.getTime();//.toString()
}

页面上面的用法

import { exportExcel } from '@/common/excelUtil'
import { getNowTimeSpan, timestampToDateShortString } from '@/common/dateUtil'

const TestExport = () => {
  let timeStamp = getNowTimeSpan();
  let shortDate = timestampToDateShortString(timeStamp);
  let headerColumns = ['name', 'age', 'city', 'birth'];//列字段
  let headerNames = ['姓名', '年龄', '城市', '生日'];//列名称
  let dateColumns = ['birth'];//需要转换为日期的列
  //数据源
  let dataArr = [
    { name: "John", age: 30, city: "New York", birth: timeStamp },
    { name: "Alice", age: 25, city: "Los Angeles", birth: timeStamp },
    { name: "Bob", age: 35, city: "Chicago", birth: timeStamp }
  ];
  let fileName = timeStamp + '.xlsx';//导出Excel文件名
  exportExcel(headerColumns, headerNames, dateColumns, dataArr, fileName);
}

 

标签:插件,slice,const,VueJs,timeStamp,Excel,let,headerColumns,dateObj
From: https://www.cnblogs.com/xsj1989/p/18258919

相关文章

  • 关于excel表格的一些相关公式及函数
    Excel中的公式和函数是进行数据处理和分析的核心。以下是一些常用的Excel公式和函数,它们在各种场景中有广泛的应用:1.**文本处理函数**  -`LEN(text)`:返回文本字符串中的字符数。  -`TEXT(value,[format])`:将数值转换为指定格式的文本。  -`TRIM(text)`:......
  • Stable Diffusion【应用篇】【艺术写真】:一个让影楼倒闭的SD插件,使用InstantID插件一
    大家好,我是AIGC阿道夫。最近收到不少网友关于AI写真方面的留言,希望能写一些关于AI写真方面的文章。个人关注AI写真有一段时间了,网上也看到了不少写的文章教程和案例,作为一个AI绘画的狂热爱好者,自然也少不了去操作实践一下,关于AI写真,后面我会作为专题来写一系列的文章,把自己......
  • IDEA~安装spring-javaformat插件
    相关文章springboot~代码风格统计spring-javaformat-maven-plugin插件springboot~spring-javaformat插件惹的祸说明在项目中,我们可以通过安装maven插件,spring-javaformat来达到代码统一的目的,而在idea中,为了与maven插件保持一致,我们最好也安装一个这个插件插件地址https:/......
  • 借助浏览器实现一个录屏插件?
    说在前面......
  • 【效率提升】倍速插件Global Speed
    globalspeed插件可以控制网页在线视频,能够应用在Edge和Google浏览器中,只需要在插件商店中下载并配置即可。这款插件的配置选项有很多,支持视频倍速(最低0.25倍速,最高16倍速),固定标签页,设置标记点,跳转标记点,循环播放等。除此之外,还有更多可以选择的配置。一般情况下,我都是打......
  • 24年新版!这份Excel+Python飞速搞定数据分析手册,简直可以让Excel飞起来
     前⾔微软在UserVoice上运营着⼀个反馈论坛,每个⼈都可以在这⾥提交新点⼦供他⼈投票。票数最⾼的功能请求是“将Python作为Excel的⼀门脚本语⾔”,其得票数差不多是第⼆名的两倍。尽管⾃2015年这个点⼦发布以来并没有什么实质性进展,但在2020年年末,Python之⽗Guidov......
  • Excel和Word等工具小技能分享汇编(一)
    这里汇集刘小生前期微信公众号分享的Excel和Word等工具小技能,为方便大家查看学习,刘小生对其进行分类整理,后期也会不定期整理更新,如有想学习交流或其他小技巧需求,欢迎留言,我们一起学习进步!如喜欢也可以关注刘小生微信公众号!一、Excel小技能汇编1、拆分和合并表格Excel如果......
  • 如何使用JavaScript实现在线Excel附件的上传与下载?
    前言在本地使用Excel时,经常会有需要在Excel中添加一些附件文件的需求,例如在Excel中附带一些Word,CAD图等等。同样的,类比到Web端,现在很多人用的在线Excel是否也可以像本地一样实现附件文件的操作呢?答案是肯定的,不过和本地不同的是,Web端不会直接打开附件,而是使用超链接单元格的......
  • C#使用 NPOI 添加图片到 Excel 单元格
    入参:工作簿对象,某个单元格对象,将要写入的图片字节数组 对象解释:XSSFClientAnchor:可设置图片放置的开始、结束单元格,X、Y起始点位(这里挖个坑,具体设置多少可以根据行高等进行计算,具体可参考pic.Resize()的实现)///<summary>///将图片添加到工作簿///</summary>/......
  • Java与React轻松导出Excel/PDF数据
    前言在B/S架构中,服务端导出是一种高效的方式。它将导出的逻辑放在服务端,前端仅需发起请求即可。通过在服务端完成导出后,前端再下载文件完成整个导出过程。服务端导出具有许多优点,如数据安全、适用于大规模数据场景以及不受前端性能影响等。本文将使用前端框架React和服务端框架S......