背景
公司为了后续文档的规范化,针对之前不规范使用xlsx文档的方式,需要通过后台管理起来。
对于开发人员,我们面临的问题就是需要把旧的数据与新的需求更好的结合在一起,不过在此之前,需要处理原有xlsx文档中不规范的数据;也就是说有些数据是符合规范的,由于数据量过万,人工处理是不现实的(别问wps的代码可以不可以处理, 鄙人对写wps代码从大学就开始抵触)
目的
需要在现有的国际化xlsx文档中,找出不规范的数据,
最终是,把不规范的数据生成为另外一份xlsx文档,给到后端作为系统的初始化数据导入数据表(如果这里大家有工作分工的疑问,那就是能者多劳)
已有条件
- 现有的包含所有数据的xlsx文档 (有规范化也有不规范化的数据)
- 已经规范化的一份xlsx文档
分析
针对条件1
- 把其中满足规范的数据过滤出去
针对条件2
- 把国际化的key整理为一个数组,(方便后续过滤使用)
代码
需要去重,确保旧文档中没有重复的数据
1.xlsx
: 总的xlsx文档
2.xlsx
: 已规范化的文档
3.xlsx
: 没有规范化的文档
// 引入 xlsx 库
const XLSX = require("xlsx");
// 读取 Excel 文件
const workbook = XLSX.readFile("1.xlsx");
/** 获取 规范化 key集合 */
function getUnusedKey() {
const output = XLSX.readFile("2.xlsx");
// 获取第一个工作表
const sheetName = output.SheetNames[0];
const worksheet = output.Sheets[sheetName];
// 将工作表数据转换为 JSON 格式
const data = XLSX.utils.sheet_to_json(worksheet);
// 根据第一列的数值去重
const uniqueData = [];
const seen = new Set();
for (const row of data) {
const key = row[Object.keys(row)[1]];
if (!seen.has(key)) {
seen.add(key);
uniqueData.push(key);
}
}
return uniqueData;
}
// 获取第一个工作表
const sheetName = workbook.SheetNames[0];
const worksheet = workbook.Sheets[sheetName];
// 将工作表数据转换为 JSON 格式
const data = XLSX.utils.sheet_to_json(worksheet);
const alreadyRunKey = getUnusedKey();
// 根据第一列的数值去重
const uniqueData = [];
const seen = new Set();
for (const row of data) {
const key = row[Object.keys(row)[0]]; // 获取第一列的值
if (!seen.has(key) && !alreadyRunKey.includes(key)) {
seen.add(key);
uniqueData.push(row);
}
}
// 创建新的工作簿并写入去重后的数据
const newWorkbook = XLSX.utils.book_new();
const newWorksheet = XLSX.utils.json_to_sheet(uniqueData);
XLSX.utils.book_append_sheet(newWorkbook, newWorksheet, "sheet1");
// // 将新工作簿保存为新文件
XLSX.writeFile(newWorkbook, "3.xlsx");
我们可以看到上面的代码,都特别的业务性质,为了特定的过滤增加的脚本,该文不仅是想帮助大家解决遇到的问题,更多的是给大家提供一种解决思路。
也让大家可以更充分的使用js
写在最后
如果该文有给到大家启发和帮助,就帮博主点个赞吧!