前端导出Excel带样式

这段代码展示了如何使用JavaScript生成一个包含公司维修案例详细信息的Excel文件。它包括标题、服务次数、合同号、服务内容等信息,并对数据进行格式化。文件以HTML表格的形式创建,然后转换为Excel格式供用户下载。
摘要由CSDN通过智能技术生成

效果
在这里插入图片描述
代码

DekExcel1: function () {
      // 标题
      let tiuelestyle =
        "width:165px;height:150px;line-height:120px;color:#0000ff;font-size:40px;padding-left:180px;box-sizing:border-box;font-family:宋体;font-weight:bolder;";
      // 标椎
      let wh = "width:165px;height:80px;line-height:50px;";
      //   序号
      let wh1 = "width:50px;height:80px;line-height:50px;";
      //   服务次数记录
      let w40 = "width:250px;height:40px;line-height:50px;";
      //   合同号
      let wh200 = "width:250px;height:80px;line-height:50px;";
      //   服务内容
      let wh400 = "width:400px;line-height:50px;";
      //   居中
      let tac = "text-align:center;";
      // 字体
      let fontST = 'font-family: "宋体";';
      let uri = "data:application/vnd.ms-excel;base64,";

      let title = "北京英之杰天祥汽车技术服务有限公司 ";
      let title2 =
        "Repair case for " +
        this.BaleTable.ContractNo +
        " in " +
        this.BaleTable.Begin.split("T")[0] +
        " to " +
        this.BaleTable.End.split("T")[0] +
        "";
      let mingxi = "上门总次数:" + this.BaleTable.ComeTotalDtos.TotalCount;
      let title2Style =
        "width:165px;height:70;background:#f60;line-height:70px;font-size:30px;text-align:center;font-weight:bolder;";
      let spanStyle = "font-family:none;font-size:30px;font-weight:bolder;";
      let Tr1 =
        "background:#ee0;font-weight:bolder;font-size:20px;height:100px;line-height:33px;";
      // 插入合同
      let mains = "";

      let mani = 0;
      for (
        let index = 0;
        index < this.BaleTable.ASCostStatPartDtos.length;
        index++
      ) {
        var row = this.BaleTable.ASCostStatPartDtos[index];
        mani += row.TotalPrice;
        mains += `
                    <tr>
                        <td style='${wh1 + tac}'>${index + 1}</td>
                        <td style='${wh200 + tac}'>${row.SOCode}</td>
                        <td style='${wh400 + tac}'>${row.Details}</td>
                        <td style='${wh + tac}'>${this.permil1(
          row.TotalPrice
        )}</td>
                        <td style='${wh + tac}'>${row.ContactINF}</td>
                        <td style='${wh + tac}'>${
          row.Engineers == null ? " - " : row.Engineers
        }</td>
                        <td style='${wh + tac}'>${row.Remark}</td>
                    </tr>
                `;
      }

      mains += `
                    <tr>
                        <td  colspan='3' style='${wh + tac}' > TOTAL</td>
                   
                        <td style='${wh + tac}'>${this.permil1(mani)}</td>
                        <td style='${wh + tac}'></td>
                        <td style='${wh + tac}'></td>
                        <td style='${wh + tac}'></td>
                    </tr>
                `;
      //   插入上门记录
      let Smen = `
                    <tr>
                        <td  ></td>
                        <td style='${
                          w40 + tac + "color:#0000ff;"
                        }'>服务内容</td>
                        <td ></td>
                        <td ></td>
                        <td ></td>
                        <td ></td>
                        <td ></td>
                    </tr>
                `;
      for (
        let index = 0;
        index < this.BaleTable.ComeTotalDtos.CountDetail.length;
        index++
      ) {
        var row = this.BaleTable.ComeTotalDtos.CountDetail[index];

        Smen += `
                    <tr>
                        <td ></td>
                        <td style='${w40 + tac}'>${row}</td>
                        <td ></td>
                        <td ></td>
                        <td ></td>
                        <td ></td>
                        <td ></td>
                    </tr>
                `;
      }

      Smen += `
                    <tr>
                        <td ></td>
                        <td style='${
                          w40 + tac + "color:#0000ff;"
                        }'>服务人员</td>
                        <td ></td>
                        <td ></td>
                        <td ></td>
                        <td ></td>
                        <td ></td>
                    </tr>
                `;

      for (
        let index = 0;
        index < this.BaleTable.ComeTotalDtos.EngineerDetail.length;
        index++
      ) {
        var row = this.BaleTable.ComeTotalDtos.EngineerDetail[index];

        Smen += `
                    <tr>
                        <td ></td>
                        <td style='${w40 + tac}'>${row}</td>
                        <td ></td>
                        <td ></td>
                        <td ></td>
                        <td ></td>
                        <td ></td>
                    </tr>
                `;
      }


      let template = `
			<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">
			<head>
				<meta charset="utf-8">
			</head>
			<body>
                <table border=1 style="${fontST}">
                    <tr>    
                    <img src="http://39.101.201.199:8005/images/inchwell.png" alt=""   />
                        <td colspan='7' style='${tiuelestyle}'>
                        <p>北京英之杰天祥汽车技术服务有限公司 <br> <span  style='${spanStyle}'> INCHWELL T & S (BEIJING) CO., LTD.</span> </p>
                       
                        </td>
                    </tr>


                    <tr>
                        <td colspan='7' style='${title2Style}'>${title2}</td>
                    </tr>

                    <tr >
                        <td style='${wh1 + tac + Tr1}'>序号 <br> PO.</td>
                        <td style='${wh200 + tac + Tr1}'>BMWZJKXZB201113AS</td>
                        <td style='${wh + tac + Tr1}'>维修内容 <br> Details</td>
                        <td style='${wh + tac + Tr1}'>合同金额 <br> TOTAL</td>
                        <td style='${
                          wh + tac + Tr1
                        }'>客户联系方式 <br> CONTACT INF.</td>
                         <td style='${
                           wh + tac + Tr1
                         }'>维修工程师 <br> ENGINEERS FOR REPAIRING</td>
                        <td style='${wh + tac + Tr1}'>备注 <br> REMARKS</td>
                    </tr>
                    ${mains}
                     <tr>
                        <td colspan='7' style='${title2Style}'>${mingxi}</td>
                    </tr>
                    ${Smen}


               

                </table>
			</body>
			</html>`;
      var ele = document.createElement("a");
      ele.download = title + ".xls"; //下载文件的名字
      ele.href = uri + window.btoa(unescape(encodeURIComponent(template)));
      document.body.appendChild(ele);
      ele.click();
      document.body.removeChild(ele);
    },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值