2017-01-16 9 views
0

私には大きな問題があります。私はstackoverflowのメンバーが私を助けることができると思います..私は私のローカルにExcelファイルがあります。そして、私はこのExcelを読んで、Excelの行に重複したデータがコンソールに書き込んでいる場合よりも読んでいます。ノード配列のオブジェクト配列indexOfの重複要素を取得

たとえば、

これは私のExcelファイルです:

enter image description here

そして、私の読書よりは、行のコードをエクセル:

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最初の要素です。2.行はr​​owValuesです。第2要素vs ...

Excelファイル行5と11で重複しています。私が欲しいものを複製する。どうしたらいいですか?

+0

だから、あなたが何をしたいセルの2つの以上の配列を比較するのですか? – MatthieuLemoine

答えて

0

rowValuesの各項目に対してmd5ハッシュを計算するには、配列の値を1つの文字列に連結してから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); 
    } 
}); 

デモ:https://jsfiddle.net/b5nqbavq/2/

+0

ありがとうございました.. –

関連する問題