1.读取文件后中文乱码
//使用fs,解码,曲线救国
//以下是曲线保证编码正确的,日后改善逻辑
vcsvStream = fs.createReadStream(global.filepath[0] ,{ encoding: 'binary' });
let data = '';
// csvStream.setEncoding('utf8');
csvStream.on('data', item => {
data += item;
});
csvStream.on("end", () => {
const buf = Buffer.from(data, "binary");
const str = iconv.decode(buf, "GBK"); // 得到正常的字符串,没有乱码
// console.log(str);
//重新写入文件后进行上传
try{
fs.writeFileSync("temp.csv", str, ["GBK"]);
} catch(error) {
console.log("fail " + error);
global.loginwindow.webContents.send("startChange-reply","临时文件创建失败");
}
});
2. 使异步函数同步读取
const excelExport = async (form) => {
const workbook = new Excel.Workbook();
console.log("是否存在tempcsv",fs.existsSync("temp.csv"));
const worksheet = await workbook.csv.readFile("temp.csv");
let nowCol = form.startX;
while(nowCol != getNext(form.endX)){
var StartCol = worksheet.getColumn(nowCol);
StartCol.eachCell(function(cell, rowNumber) {
if(rowNumber>=form.startY && rowNumber<=form.endY ){
console.log(rowNumber);
try {
if(form.sp1 != form.sp2){
var Value1 = cell.value.split(form.sp1)[0];
var Value2 = cell.value.split(form.sp1)[1].split(form.sp1[0]);
var Value3 = cell.value.split(form.sp1)[1].split(form.sp1[1]);
}else{
var Value1 = cell.value.split(form.sp1)[0];
var Value2 = cell.value.split(form.sp1)[1];
var Value3 = cell.value.split(form.sp1)[2];
}
}catch (err) {
console.log("error:",err);
global.loginwindow.webContents.send("startChange-reply","分割失败,请检查分隔符是否填写正确");
return;
}
console.log(Value1,Value2,Value3);
let threeSix = 3600*Math.pow(10,parseInt(form.n));
while (parseInt(Value3)/threeSix >1){
threeSix = threeSix*10;
}
console.log(threeSix);
cell.value = (parseInt(Value1)+parseInt(Value2)/60+parseInt(Value3)/threeSix).toFixed(parseInt(form.format));
console.log(cell.value);
}
});
nowCol = getNext(nowCol);
}
const options = {
formatterOptions: {
writeBOM: true,
},
};
try {
await workbook.csv.writeFile(global.filepath[0],options);
} catch (err) {
console.log("error:",err);
global.loginwindow.webContents.send("startChange-reply","文件写入失败,请检查是否正在占用");
return;
}
}
新车首发,新的一年,只带想赚米的人coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com