使用exceljs 导出表格有下拉框(nodejs)

使用exceljs 导出表格有下拉框(nodejs)下载exceljs地址1、git:https://github.com/exceljs/exceljs.git2、码云地址:https://gitee.com/mirrors/exceljs文档很全面只要按照步骤就没有问题1、index.js内容constExcelJS=require(‘exceljs’);asyncfunctionddd(){console.log(111)constwb=newExcelJS.Workbook();constSheet1=w

下载exceljs地址
1、git:https://github.com/exceljs/exceljs.git
2、码云地址:https://gitee.com/mirrors/exceljs
文档很全面只要按照步骤就没有问题

1、index.js 内容

const ExcelJS = require(‘exceljs’);
async function ddd() {

console.log(111)
const wb = new ExcelJS.Workbook();
const Sheet1 = wb.addWorksheet(‘Sheet1’);
const Sheet2 = wb.addWorksheet(‘Sheet2’);
const test = wb.addWorksheet(‘test’);

//表2 性别
Sheet2.columns = [{
		header: '性别',
		key: 'sex',
		width: 20
	},
	{
		header: '性别值',
		key: 'sexVal',
		width: 20
	},
];


const Sheet2_data = [{
	sex: '女',
	sexVal: '0',
}, {
	sex: '男',
	sexVal: '1',
}];

Sheet2.addRows(Sheet2_data);

// 添加性别管理器
const _data = Sheet2_data.reduce((p, c) => {
	if (!p.has(c.sex)) {
		p.set(c.sex, [c.sexVal]);
	} else {
		const arr = p.get(c.sex);
		arr.push(c.sexVal);
	}
	return p;
}, new Map());

// console.log(_data)

const sexs = Array.from(_data.keys());
const sexVals = Array.from(_data.values());

test.addRows(sexVals);


test.eachRow(function(row, i) {
	const sex = sexs[i - 1];
	// console.log(sex, i);
	row.eachCell(function(cell, colNumber) {
		cell.addName(sex);
	});
});



Sheet1.columns = [{
		header: '编号',
		key: 'no',
		width: 20
	}, // A1
	{
		header: '姓名',
		key: 'name',
		width: 20
	}, // B2
	{
		header: '性别',
		key: 'sex',
		width: 20
	}, // C3
	{
		header: '性别值',
		key: 'sexVal',
		width: 20
	}, // D4
];

const Sheet1_data = [{
	no: '1',
	name: '小红',
	sex: '女',
	sexVal: '0',
}]


Sheet1.addRows(Sheet1_data);
///
new Array(1000).fill(0).forEach((_, idx) => {
	const row = idx + 2;
	// 渲染部门下拉框
	Sheet1.getCell(row, 3).dataValidation = {
		type: 'list',
		formulae: [`=Sheet2!$A$2:$A${Sheet2_data.length+1}`]
	};
	// 使用indirect函数添加引用, 渲染性别值
	Sheet1.getCell(row, 4).dataValidation = {
		type: 'list',
		formulae: [`=INDIRECT(C${row})`]
	};
});

// await wb.xlsx.writeFile('C:/Users/Administrator/Desktop/dd/模板列表.xlsx');
await wb.xlsx.writeFile('./dd.xlsx');

console.log(111)

return;

}

ddd()

2、运行 node index.js

今天的文章使用exceljs 导出表格有下拉框(nodejs)分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/25165.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注