// 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)
}