云迈博客

您现在的位置是:首页 > 前端技术 > 正文

前端技术

h5页面生成excel表格文件

俗人将庸2020-09-26前端技术370
用途,主要用于表格类的输出,对json数据进行表格输出,不需要通过后端进行文件生成操作

js生成excel表格

用途,主要用于表格类的输出,对json数据进行表格输出,不需要通过后端进行文件生成操作

数据格式示例

var d={
    name:'21321332',//项目名称
    company:'',//项目实施单位
    pro_desc:'',//项目简介
    p_name:'',//项目负责人
    phone:'',//联系电话
    z_money:'',//文化产业资金支持金额
    pay_type:'',//付款方式
    jx:[//绩效目标
    {
        z_a:'12',//一级指标
        z_b:'345',//二级指标
        z_num:'78',//指标值
        z_desc:'980',//指标说明
    }
    ],
    ssjh:[//实施计划
    {
        time:'2134',//计划期间
        desc:'56666565',//阶段任务说明
    },{
        time:'2134hah',//计划期间
        desc:'56666565111',//阶段任务说明
    },
    ],
    end_desc:'',//验收结论
    end_fu:'',//验收小组签名-负责人
    end_p:'',//验收小组签名-成员
    shen_desc:'',//绩效评价-第三方审核意见
};

创建table表格主题

//表格主题内容根据需求创建表格,建议先用excel写出table样式,然后进行赋值渲染,
//赋值中也可以实现循环列表
function excel_a() {
    let text=`
    <table class="table_a" border="0" cellpadding="0" cellspacing="0">
       <tr><td colspan="6" class="title">项目实施计划任务书(基础工作类)</td></tr>

       <tr><td style="border-left: .5pt solid #000" rowspan="5">基本信息</td><td>项目名称</td><td colspan="4">${d.name}</td></tr>
       <tr><td>项目实施单位</td><td colspan="4">${d.company}</td></tr>
       <tr><td>项目简介</td><td colspan="4">${d.pro_desc}</td></tr>
       <tr><td>项目负责人</td><td>${d.p_name}</td><td>联系电话</td><td colspan="2">${d.phone}</td></tr>
       <tr><td style="width:150px;">文化产业资金支持金额</td>${d.z_money}<td></td><td>付款方式</td><td colspan="2">${d.pay_type}</td></tr>

       <tr><td style="border-left: .5pt solid #000" rowspan="${d.jx.length+1}">绩效目标</td><td>一级指标</td><td>二级指标</td><td>指标值</td><td colspan="2">指标说明</td></tr>
       ${d.jx.map(li => `
            <tr><td>${li.z_a}</td><td>${li.z_b}</td><td>${li.z_num}</td><td colspan="2">${li.z_desc}</td></tr>
        `).join('')}

       <tr><td style="border-left: .5pt solid #000" rowspan="${d.ssjh.length+1}">实施计划</td><td>计划期间</td><td colspan="4">阶段任务说明</td></tr>

        ${d.ssjh.map(li => `
            <tr><td>${li.time}</td><td colspan="4">${li.desc}</td></tr>
        `).join('')}

       <tr><td style="border-left: .5pt solid #000" rowspan="3">验收情况</td><td>验收结论</td><td colspan="4" style="height: 100pt;">${d.end_desc}</td></tr>
       <tr><td rowspan="2">验收小组签名</td><td>负责人:</td><td colspan="3">${d.end_fu}</td></tr>
       <tr><td>成员:</td><td colspan="3">${d.end_p}</td></tr>

       <tr><td style="border-left: .5pt solid #000">绩效评价</td><td colspan="5" style="height: 120pt;">${d.shen_desc}</td></tr>
    </table>
  `;
  //执行生成表格方法
  excel(text, "基础工作类.xlsx");
}

将table生成为表格文件


//生成excel执行方法
//style中为excel中表格样式,和css写法一样
function excel(data, filename) {
    var head=`
    <head>
    <!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
    <x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets>
    </x:ExcelWorkbook></xml><![endif]-->

    <style type='text/css'>
        table.table_a td {mso-ignore: padding;mso-number-format: 'General';mso-generic-font-family: modern;mso-font-charset: 134;
        mso-protection: locked visible;mso-rotate: 0;mso-pattern: auto;mso-background-source: auto;
        text-align: left;vertical-align: middle;color: #000000;font-weight: 400;font-style: normal;text-decoration: none;line-height:3;
        font-size: 16.0pt;font-family: 仿宋;border-bottom: .5pt solid #000;border-right: .5pt solid #000;word-wrap: break-word;
        word-break: break-all;padding: 0 5px;height:40pt;}
        table.table_a{width:900px;}
        table.table_a tr:nth-child(1){border-bottom: .5pt solid #000;}
        table.table_a tr td:nth-child(1){border-left: .5pt solid #000;}
        table.table_a tr:nth-child(1) td:nth-child(1){border-left: 0;}
        table.table_a td.title{border-right:none;font-weight: 600;font-size: 20pt;text-align: center;height: 80pt;}
    </style>
    </head>
    `;
    var html =
        "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:excel' xmlns='http://www.w3.org/TR/REC-html40'>";
    html += '<meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8">';
    html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>';
    html += head;
    html += "<body>";
    html += data;
    html += "</body>";
    html += "</html>";
    var uri = 'data:application/vnd.ms-excel;charset=utf-8,' + encodeURIComponent(html);
    var link = document.createElement("a");
    link.href = uri;
    link.style = "visibility:hidden";
    link.download = `${filename}`;
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
}

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~