js导出excel表格

纯前端导出json为excel表格,不需要插件,直接上代码,导出函数:

/**
 * @date 2019/3/21
 * @author lxs
 * @Description: 生成excel
 * @param: titles:顶部一行名称集合{name:显示的名称,fieldName:对应json中的字段名} jsonData:所有数据json对象 worksheet:工作区名称,默认'Sheet' uri:uri类型默认excel
 * @return: none
 */
function tableToExcel(titles,jsonData ,worksheet = 'Sheet',uri = 'data:application/vnd.ms-excel;base64,'){

    //列标题
    let str = '';
    for (let i = 0; i < titles.length; i++) {
        str += ''+titles[i].name+''
    }
    str += '';

    //循环遍历,每行加入tr标签,每个单元格加td标签
    for(let i = 0 ; i < jsonData.length ; i++ ){
        str+='';
        for(let item of titles){
            //增加\t为了不让表格显示科学计数法或者其他格式
            str+= '' + jsonData[i][item.fieldName] +'\t';
        }
        str+='';
    }

    let template = ''+
        ''+
        ''+str+'
'; //下载模板 window.location.href = uri + window.btoa(unescape(encodeURIComponent(template))); }

测试代码:

示例:
//测试代码
//要导出的json数据
const jsonData = [
    {
        name:'甲',
        phone:'13112341111',
        email:'[email protected]'
    },
    {
        name:'乙',
        phone:'13112341111',
        email:'[email protected]'
    },
    {
        name:'丙',
        phone:'13112341111',
        email:'[email protected]'
    },
    {
        name:'丁',
        phone:'13112341111',
        email:'[email protected]'
    },
]

const titles = [{name: '姓名',fieldName: 'name'},{name: '电话',fieldName: 'phone'},{name: '邮箱',fieldName: 'email'}];

tableToExcel(titles, jsonData);

感谢您的阅读!如果文章中有任何错误,或者您有更好的理解和建议,欢迎和我联系!

你可能感兴趣的:(js导出excel表格)