У меня есть таблица с двумя листами.Sheet 1
содержит 3 столбца с сотнями строк данных (строк).Sheet 2
должен использоваться как таблица правильных комбинаций для Sheet 1
, с которой нужно проверить, чтобы убедиться, что значения в ячейке верны.Sheet 2
также имеет 3 столбца.
Что я хотел бы сделать, это перебрать Sheet 1
строка за строкой и проверить, что значение каждой ячейки в строке соответствует в любом месте что в Sheet 2
, строка за строкой.
Если проверка не пройдена, то дальнейшие проверки в этой строке должны быть прекращены, и начинается следующая проверяемая строка.Ячейки в Sheet 1
, которые не могут быть сопоставлены, должны быть помечены красным.
Мой код ниже близок к тому, что мне нужно, но помечает больше ячеек, чем требуется.
// Import the library
var Excel = require('exceljs');
var moment = require('moment');
// Define Excel filename
var ExcelFile = 'so.xlsx';
// Read from the file
var workbook = new Excel.Workbook();
workbook.xlsx.readFile(ExcelFile)
.then(function() {
// Use workbook
var dataSheet = workbook.getWorksheet('Sheet 1');
var masterSheet = workbook.getWorksheet('Sheet 2');
dataSheet.eachRow({ includeEmpty: false }, function(row, rowNumber) {
var dataSheetCell1 = row.getCell('A').value;
var dataSheetCell2 = row.getCell('B').value;
var dataSheetCell3 = row.getCell('C').value;
masterSheet.eachRow({ includeEmpty: false }, function(row, rowNumber) {
var masterSheetCell1 = row.getCell('A').value;
var masterSheetCell2 = row.getCell('B').value;
var masterSheetCell3 = row.getCell('C').value;
// Iterate over all cells in a row (including empty cells)
row.eachCell({ includeEmpty: false }, function(cell, colNumber) {
if(dataSheetCell1 == masterSheetCell1) {
console.log(true)
} else {
// Stop all further checks for this sheet(n) row and move onto next row
// Mark this failed cell as color red
}
});
});
});
return workbook.xlsx.writeFile('new.xlsx');
});
Пример данных будет выглядеть следующим образом:
Лист 1:
| COL A | COL B | COL C |
|-------|--------|--------|
| bob | eleven | blue |
| bob | eleven | blue |
| bob | eleven | red |
| bob | eleven | red |
| bob | one | red |
| bob | eight | red |
| bob | eight | red |
| bob | eight | red |
| terry | seven | yellow |
| terry | seven | yellow |
| terry | seven | gold |
Лист 2:
| COL A | COL B | COL C |
|-------|--------|--------|
| bob | eleven | blue |
| bob | eleven | red |
| bob | eight | red |
| terry | seven | yellow |
| terry | seven | orange |
Согласно данным выборки, должно быть две ошибки (B5
и C11
), которые отмечены красным цветом в Sheet 1
из new.xlsx
.Например,

Это пример PDF того, как должна проходить проверка:
