vue3 js exceljs生成模板

// utils.js
/**
 * 传入参数说明
 * @param name 导出名称
 * @param columns 表头设置,下面有示例
 * @param list 表格数据,下面有示例
 * @param num 要设置的列数,也可以通过findIndex找出设置
 */
// 封装了一个函数,直接传入值就好了
// const ExcelJS = require('exceljs')
// const FileSaver = require('file-saver')
import ExcelJS from 'exceljs'
import FileSaver from 'file-saver'
export async function staff_import_template(name, columns, list, num, arry,cellStatus) {
  const wb = new ExcelJS.Workbook()
  const Sheet1 = wb.addWorksheet(name) // 新建工作表,可以建多个

  Sheet1.columns = columns // 设置表头,(key, 宽度)
  // Sheet1.columns = [ // 表头格式如下
  //   {
  //     header: '编号',
  //     key: 'no',
  //     width: 20
  //   }, // A1
  //   {
  //     header: '姓名',
  //     key: 'name',
  //     width: 20
  //   }, // B2
  // ]

  // const list = [ // 表格数据格式如下
  //   {
  //     no: '1',
  //     name: '小红',
  //     sex: '女',
  //     sexVal: '0'
  //   }
  // ]

  Sheet1.addRows(list) // 设置表格数据
  // 表示循环1000行
  if(cellStatus === 1){
    new Array(1000).fill(0).forEach((_, idx) => {
      const row = idx + 2
      // 渲染下拉框  参数(行,列) row表示每行 可以单独写哪一列
      Sheet1.getCell(row, num).dataValidation = {
        type: 'list',
        //formulae: ['"male,female"'], // 下拉列表的值   ⚠一定要是外面单引号,里面双引号
        formulae:arry,
        showErrorMessage: true // 向用户显示适当的错误消息(如果他们弄错了)
        // errorStyle: 'error', // 错误样式
        // errorTitle: 'Five', // 错误标题
        // error: 'The value must not be Five', // 错误提示文本
        // promptTitle: 'Decimal', // // 添加“工具提示”以帮助指导用户
        // prompt: 'The value must between 1.5 and 7', // 工具提示文本
        // formulae: [15], // 指定单元格的文本长度必须小于15
        // formulae: [new Date(2016,0,1)] // 指定单元格必须是2016年1月1日之前的日期
      }
    })
  }
  const buffer = await wb.xlsx.writeBuffer() // 创建文件流
  FileSaver.saveAs(new Blob([buffer]), `${name}.xlsx`) // 保存文件,使用 file-saver 库
  console.log(111)
  return
}

import { staff_import_template } from '../../utils/utilsTx.js';

//生成教师excel文件模板
const ExcelExport = async() => {
  console.log('触发excel文件模板')
  const tHeader = [ // 表头格式如下
     {
       header: '教师姓名',
       key: 'realName',
       width: 20
     }, // A1
     {
       header: '手机号码',
       key: 'phone',
       width: 20
     }, // B2
     {
       header: '用户名',
       key: 'userName',
       width: 20
     }, // B2
     {
       header: '密码',
       key: 'password',
       width: 20
     }, // B2
     
     {
       header: '所属科室',
       key: 'depart_id',
       width: 20
     }, // B2
   ]
  const list = [ // 表格数据格式如下
  ]
  let newArray = []
  // let res_find = await depart_find()
  //   if(res_find.data.success === true){
      let departnames = [111]
    // res_find.data.data.forEach(item => {
    //   departnames.push(item['name'])
    // })
    const joinedString = departnames.join(',');  
    console.log('departnames:',departnames)

    console.log('joinedString:',joinedString)
    // 然后,将这个字符串用双引号包围,并创建一个新的只包含这个字符串的数组  
    newArray = [`"${joinedString}"`];  
  // }else{
  //   newArray = [`"其他"`]
  // }
  staff_import_template('教师导入模板', tHeader, list, 5,newArray,1)

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值