我有一个很大的问题。我想stackoverflow成员可以帮助我..我在我的本地有一个Excel文件。而且我想阅读这个Excel,如果Excel行的数据比我写入控制台的数据重复。
例如清楚;
这是我的Excel文件:
并且比我的阅读更好的行代码:
workbook.xlsx.readFile('excelvalidation.xlsx').then(function() {
var rowValues = {};
var worksheet = workbook.getWorksheet(1);
var columnCount = worksheet.columnCount;
worksheet.eachRow(function(row, rowNumber) {
if(rowNumber > 2) {
var dizi = [];
row.eachCell(function(cell, colNumber){
dizi.push(cell.value);
});
rowValues[rowNumber-3] = dizi;
}
});
for(var i = 0 ; i < Object.keys(rowValues).length ; i++) {
console.log(" " + rowValues[i]);
}
rowValues
是具有全行的对象。它表示1.行是rowValues
第一个元素,第二行是rowValues第二个元素vs ...
所以在Excel文件中第5行和第11行重复,我想为消息编写控制台&#34; 5和11行是重复的&#34;我想要的是。我该怎么做?谢谢你的帮助..
答案 0 :(得分:0)
您可以通过将数组中的值连接成单个字符串,然后使用md5函数,为rowValues中的每个项计算md5哈希值。 然后,可以将此哈希用作具有这些值的行的索引(导致该md5哈希的值)。
这是一个可以检测多次出现(超过2个重复行)的示例实现:
var rowValues = [
['E', '10-15', 'ankara'],
['E', '10-15', 'antalya'],
['E', '20-25', 'ankara'],
['E', '20-25', 'antalya'],
['K', '10-15', 'ankara'],
['K', '10-15', 'antalya'],
['K', '20-25', 'ankara'],
['K', '20-25', 'antalya'],
['E', '20-25', 'ankara'],
['K', '10-15', 'antalya'],
['E', '20-25', 'ankara'],
];
var hashes = {};
rowValues.forEach(function(row, idx){
var hash = md5(row.join('~~~'));
if (hash in hashes) {
hashes[hash].push(idx);
} else {
hashes[hash] = [idx];
}
})
Object.keys(hashes).forEach(function(key, idx) {
var msg = '';
if (hashes[key].length > 1) {
msg = 'Rows ' + hashes[key].join(' and ') + ' are duplicate\n';
console.log(msg);
}
});