代码错误:从 node.js 中的 xlsx 工作表中删除重复值



我正在尝试从xlsx工作表中删除重复值,我已经为此编写了"removeDuplicate"函数,该函数将xlsx工作表作为参数;

下面是我的 removeDuplicate 代码.我在控制台上为 JSON 数组尝试了这段代码,它给出了正确的值,但是当我尝试将结果放入 xlsx 工作表时,它仍然保留重复值。

const XLSX = require('xlsx')
var json2xls = require('json2xls');
var removeDuplicate=((worksheet)=>{


var xlsxJson = XLSX.utils.sheet_to_json(worksheet);
var jsonString = JSON.stringify(xlsxJson);
var xlsxJson1 = JSON.parse(jsonString);
console.log(xlsxJson1[0]['Report Status'])
var i;
for (let i = 0; i < xlsxJson1.length; i++) {
{
for(let j=i+1;j<xlsxJson1.length; j++){
if(xlsxJson1[i]['TicketName']===xlsxJson1[j]['TicketName'] 
&& xlsxJson1[i]['Date']==xlsxJson1[j]['Date'] 
&& xlsxJson1[i]['In_Input']===xlsxJson1[j]['In_Input']
&& xlsxJson1[i]['In_Result']===xlsxJson1[j]['In_Result']
&&xlsxJson1[i]['Call_Api']===xlsxJson1[j]['Call_Api']
&& xlsxJson1[i]['Report Status']===xlsxJson1[i]['Report Status']){
xlsxJson1[j]=" ";
console.log(xlsxJson1[j])
}
else if((xlsxJson1[i]['TicketName']===xlsxJson1[j]['TicketName']
&& xlsxJson1[i]['Date']==xlsxJson1[j]['Date']) 
&& (xlsxJson1[i]['In_Input']===xlsxJson1[j]['In_Input']
|| xlsxJson1[i]['In_Result']===xlsxJson1[j]['In_Result']
|| xlsxJson1[i]['Call_Api']===xlsxJson1[j]['Call_Api']
|| xlsxJson1[i]['Report Status']===xlsxJson1[i]['Report Status'])){
xlsxJson1[i]=xlsxJson1[j]
xlsxJson1[j]=" ";
console.log(xlsxJson1[j])
}
else{
console.log(xlsxJson1[j])
continue;
}
}
}
}
return xlsxJson;
//
return json2xls(xlsxJson1)
})
module.exports=removeDuplicate;

下面是我的代码,其中在app.js中调用此函数: 呜呜.js

ws = XLSX.utils.sheet_add_json(ws, ticketNameArr,{origin:-1, skipHeader:true});

removeDuplicate(ws)
// XLSX.utils.book_append_sheet(wb, ws) // sheetAName is name of Worksheet
XLSX.writeFile(wb, 'DailyTicketSatus.xlsx')
// XLSX.writeFile(wb, 'DT.xlsx')

[{ 日期: 10.09.2019, 票证名称: "ABC", In_Input:"真", Input_Time: 20:08, In_Result:"假", Call_Api:"假", "报告状态": "无日志文件", 评论:"票证未处理", 状态:"部分故障"}, { 日期:11.10.19, 工单名称: "BCD", In_Input:"假", In_Result:"假", Call_Api:"假", "报告状态": "无日志文件", 评论:"票没有被选中", 状态:"失败" }, { 日期:11.10.19 , 工单名称: "BCD", In_Input:"真", Input_Time: 43743.37598236111, In_Result:"假", Call_Api:"假", "报告状态": "无日志文件", 评论:"票证未处理", 状态:"部分故障" }]

现在预期输出为:{日期:10.09.2019, 票证名称: "ABC", In_Input:"真", Input_Time: 20:08, In_Result:"假", Call_Api:"假", "报告状态": "无日志文件", 评论:"票证未处理", 状态:"部分故障"}, { 日期:11.10.19, 工单名称: "BCD", In_Input:"假", In_Result:"假", Call_Api:"假", "报告状态": "无日志文件", 评论:"票没有被选中", 状态:"失败" }, { "" }. 我在控制台上得到的。但是我无法在 xlsx 文件中写入它。我尝试了 json2xlsx 但它没有;t 工作。如何将修改后的数据写入我的 xlxs 工作表。

您可以删除重复项,返回 JSON 数据,然后替换现有工作表。下面的代码将对输入文件执行此操作,然后写入输出文件。

如果要就地更改文件,只需将输出文件名设置为与输入文件相同即可。确保文件未锁定!

var removeDuplicate=((worksheet)=> {
var xlsxJson = XLSX.utils.sheet_to_json(worksheet);
for (let i = 0; i < xlsxJson.length; i++) {
for(let j=i+1;j<xlsxJson.length; j++) {
if(xlsxJson[i]['TicketName']===xlsxJson[j]['TicketName'] 
&& xlsxJson[i]['Date']==xlsxJson[j]['Date'] 
&& xlsxJson[i]['In_Input']===xlsxJson[j]['In_Input']
&& xlsxJson[i]['In_Result']===xlsxJson[j]['In_Result']
&& xlsxJson[i]['Call_Api']===xlsxJson[j]['Call_Api']
&& xlsxJson[i]['Report Status']===xlsxJson[i]['Report Status']) {
xlsxJson[j]=" "; // Mark row as duplicate
}
else if((xlsxJson[i]['TicketName']===xlsxJson[j]['TicketName']
&& xlsxJson[i]['Date']==xlsxJson[j]['Date']) 
&& (xlsxJson[i]['In_Input']===xlsxJson[j]['In_Input']
|| xlsxJson[i]['In_Result']===xlsxJson[j]['In_Result']
|| xlsxJson[i]['Call_Api']===xlsxJson[j]['Call_Api']
|| xlsxJson[i]['Report Status']===xlsxJson[i]['Report Status'])) {
xlsxJson[i]=xlsxJson[j]
xlsxJson[j]=" "; // Mark row as duplicate
}
else {
continue;
}
}
}
// Filter out duplicate rows.
xlsxJson = xlsxJson.filter(row => (row + "").trim());
return xlsxJson;    
})
const inputFile = "tickets.xlsx";
const outputFile = "output.xlsx";
const sheetName = "Sheet1" // <-- Change to the actual sheet name.
const workbook = XLSX.readFile(inputFile);
let sheetJson = removeDuplicate(workbook.Sheets[sheetName]);
// Overwrite worksheet
workbook.Sheets[sheetName] = XLSX.utils.json_to_sheet(sheetJson);
XLSX.writeFile(workbook, outputFile); 

最新更新