【前端11】excel.js的使用,规定列类型

const workbook = new ExcelJS.Workbook()
      const worksheet = workbook.addWorksheet('Sheet1')
      //添加表头
      //worksheet.addRow(['contract No.', 'Invoice Currency', 'Contract Currency', 'vendor name', 'Com Co.', 'TP', 'Amount', 'Reference', 'Document date', 'Due date', 'Service type', 'Status', 'Document number', 'Vender code', 'vendor name', 'Year', 'Text', 'Block key', 'Terms of payment', 'Baseline payment date', 'Local currency amount', 'Contact person', 'Responsible AP', 'Business Area'])
      worksheet.addRow(['contract No.', 'Currency', 'Contract Currency', 'Vendor Name', 'Company Code', 'Trading partner', 'Total Amount', 'Reference', 'Posting Date', 'Due date for net payment period', 'Service type', 'Status', 'Document Number', 'Vender code', 'Year', 'Text', 'PBk', 'Terms of Payment Key', 'Bline Date', 'Loc.curr.amount', 'Contact person', 'Responsible AP', 'BusA'])


      // 添加数据
      dataToExport.value.forEach((item: any) => {
        worksheet.addRow([item.contractNum, item.invoiceCurrency, item.ContractCurrency, item.vendorName, item.companyCode, item.tradingPartner, item.amount, item.reference, excelDate(item.documentDate), excelDate(item.dueDate), item.invoiceServiceType, item.currentStatus, item.documentNum, item.venderCode, item.year, item.text, item.blockKey, item.termsOfPayment, excelDate(item.baselinePaymentDate), item.
          localCurrencyAmount, item.contactPerson, item.responsibleAP, item.business_area])
      })
      // 设置数值格式和文本格式
      const numFmtColumns = ['G', 'T']; // 列索引,需要设置数值格式的列

      numFmtColumns.forEach((colIndex) => {
        worksheet.getColumn(colIndex).eachCell((cell) => {
          if (!isNaN(cell.value)) { // 只处理数值类型的单元格
            cell.numFmt = '#,##0.00';
          }
        });
      });
      // 将列 m设置为文本格式
      const textColumns = ['M']; // 列索引,需要设置为文本格式的列

      textColumns.forEach((colIndex) => {
        worksheet.getColumn(colIndex).eachCell((cell) => {
          cell.value = cell.value.toString(); // 将值转换为字符串确保是文本类型
          cell.numFmt = '@'; // 设置为文本格式
        });
      });
      // 生成文件
      workbook.xlsx.writeBuffer().then((buffer: any) => {
        const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
        const link = document.createElement('a')
        link.href = URL.createObjectURL(blob)
        link.download = 'invoice_information.xlsx'
        link.click()
        URL.revokeObjectURL(link.href)
      })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值