You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
4.7 KiB

const fs = require('fs');
const path = require('path');
const uuidv4 = require('uuid');
var q = require('qiao-zip');
const os = require("os");
/*
name:biao[j][nameid],
xuehao:biao[j][xuehaoid],
sex:biao[j][sex],
classid:biao[j][classid],
xueyuan:biao[j][xueyaunid],
idcard:biao[j][idcardid],
ruxuetime:ruxue,
iphone:biao[j][iphone],
parentphone:biao[j][parentphone],
parentname:biao[j][parentname],
*/
function nametop(){
}
async function makeExcel(exceljson) {
let wblist=[]//excel文本列表
wblist.push("姓名");
wblist.push("学号")
wblist.push("性别")
wblist.push("专业");
wblist.push("学院")
wblist.push("身份证号")
wblist.push("入学时间")
wblist.push("手机号")
wblist.push("默认密码")
let listexcel=""
//console.log(exceljson);
exceljson.map((value,index) => {
let nameindex = wblist.indexOf(value.name);
if (nameindex == -1) {
wblist.push(value.name);
nameindex = wblist.indexOf(value.name);
}
let namexml = `<c r="A${index + 2}" t="s"><v>${nameindex}</v></c> `;
let xuehaoindex
= wblist.indexOf(value.xuehao);
if (xuehaoindex === -1) {
wblist.push(value.xuehao);
xuehaoindex = wblist.indexOf(value.xuehao);
}
let xuehaoxml = `<c r="B${index + 2}" t="s"><v>${xuehaoindex}</v></c> `
let sexindex = wblist.indexOf(value.sex);
if (sexindex === -1) {
wblist.push(value.sex)
sexindex = wblist.indexOf(value.sex)
}
let sexxml = `<c r="C${index + 2}" t="s"><v>${sexindex}</v></c>`
let classindex = wblist.indexOf(value.classid);
if (classindex === -1) {
wblist.push(value.classid);
classindex = wblist.indexOf(value.classid);
}
let classxml = `<c r="D${index + 2}" t="s"><v>${classindex}</v></c>`
let xueyuanindex = wblist.indexOf(value.xueyuan);
if (xueyuanindex === -1) {
wblist.push(value.xueyuan);
xueyuanindex = wblist.indexOf(value.xueyuan);
}
let xueyuanxml = `<c r="E${index + 2}" t="s"><v>${xueyuanindex}</v></c>`
let idcardindex = wblist.indexOf(value.idcard);
if (idcardindex === -1) {
wblist.push(value.idcard);
idcardindex = wblist.indexOf(value.idcard);
}
let idcardxml = `<c r="F${index + 2}" t="s"><v>${idcardindex}</v></c>`
let ruxuetimeindex = wblist.indexOf(value.ruxuetime);
if (ruxuetimeindex === -1) {
wblist.push(value.ruxuetime);
ruxuetimeindex = wblist.indexOf(value.ruxuetime);
}
let ruxuetimexml = `<c r="G${index + 2}" t="s"><v>${ruxuetimeindex}</v></c>`
let iphoneindex = wblist.indexOf(value.iphone);
if (iphoneindex === -1) {
wblist.push(value.iphone);
iphoneindex = wblist.indexOf(value.iphone);
}
let iphonexml = `<c r="H${index + 2}" t="s"><v>${iphoneindex}</v></c>`
let passwordindex = wblist.indexOf(value.password);
console.log(value.password)
if (passwordindex === -1) {
wblist.push(value.password);
passwordindex = wblist.indexOf(value.password);
}
let passwordxml = `<c r="I${index + 2}" t="s"><v>${passwordindex}</v></c>`
const xmlall=namexml+xuehaoxml+sexxml+classxml+xueyuanxml+idcardxml+ruxuetimexml+iphonexml+passwordxml;
const row=`<row r = "${index+2}" spans = "1:9" >${xmlall}</row> `
listexcel+=row;
})
let moban=fs.readFileSync("sheet2.xml","utf8")
let shuzu= moban.split("shuliang");
moban=shuzu[0]+`I${exceljson.length+1}`+shuzu[1];
shuzu=moban.split("charuwengjian");
moban=shuzu[0]+listexcel+shuzu[1];
let stringlist="";
wblist.map((value,index)=>{
const wbxml=`<si><t>${value}</t></si>`
stringlist+=wbxml;
})
let wbxml=fs.readFileSync("sharedStrings.xml","utf8")
let wbshuzu=wbxml.split("wblist");
wbxml=wbshuzu[0]+stringlist+wbshuzu[1];
const cacheDir = path.join(os.homedir(), '.cache');
const filedir=cacheDir+'\\learn\\'+uuidv4.v4();
console.log(filedir)
fs.mkdirSync(filedir);
await q.unzip("scexcelstu.zip", filedir)
fs.writeFileSync(`${filedir}\\xl\\sharedStrings.xml`,wbxml)
fs.writeFileSync(`${filedir}\\xl\\worksheets\\sheet1.xml`,moban)
const uuidv41=uuidv4.v4();
const dir=`C:\\Users\\l\\WebstormProjects\\examp\\serve\\nginx\\html\\stuexcel\\${uuidv41}.zip`;
await q.zip(filedir, dir,false)
fs.copyFileSync(dir,`C:\\Users\\l\\WebstormProjects\\examp\\serve\\nginx\\html\\stuexcel\\${uuidv41}.xlsx`)
return(`http://localhost:89/stuexcel/${uuidv41}.xlsx`);
}
exports.makeExcel=makeExcel;