Thanks. It will be great if similar templates database are maintained for all supporting sites using captcha guru.
Записать в xlsx (эксель) через цикл
-
@warenuk said in Записать в xlsx (эксель) через цикл:
Потратил 2 дня на танцы с бубнами для решения этой проблемы. Надеюсь будет полезно, что то вроде мануала для новичков
Для начала ставим npm модуль "exceljs"
Кто не знает как это сделать, мануал создателяДальше вставляем в функцию Node.js готовый код.
var Excel = require('exceljs'); var workbook = new Excel.Workbook(); workbook.xlsx.readFile('/*путь к файлу (для чтения) например C:/our.xlsx') .then(function() { var i = /* ваша переманная (в BAS) со значением цикла[[CYCLE_INDEX]]*/; var info = /*ваша переменная с даннымы[[FIRST_LIST_ELEMENT]]*/; var worksheet = workbook.getWorksheet(/*номер стриницы xlsx1*/); var row = worksheet.getRow(/*номер строки, можно из переменной i*/); row.getCell(/*номер столбца*/).value = info); row.commit(); return workbook.xlsx.writeFile('/*Путь к файлу для записи напиример: C:/our.xlsx'*/); })Вот пример как должно выглядеть
var Excel = require('exceljs'); var workbook = new Excel.Workbook(); workbook.xlsx.readFile('C:/our.xlsx') .then(function() { var i = [[CYCLE_INDEX]]; var info = [[FIRST_LIST_ELEMENT]]; var worksheet = workbook.getWorksheet(1); var row = worksheet.getRow(i); row.getCell(1).value = info; row.commit(); return workbook.xlsx.writeFile('C:/our.xlsx'); })Готовый проект с установленным модулем: 0_1550491140538_manual.xml
ВАЖНО!!! Файл уже должен быть создан перед началом работы
Кратко о логике, модуль читает указанный вами файл.
Добавляет или изменяет нужные значение.
Записывает в файл
Если есть вопросы задавайте.P.s. Не знал в какую категорию записать тему, админ не серчай.
Сделал также, ошибок не выдает, но Файл ексель не меняется
-
@Kingstreet06 Смотрите в ваш цик пошагово, и определите на каком месте данные уходят. Более вероятно что косяк с расположением файла
-
@Semen said in Записать в xlsx (эксель) через цикл:
Здравствуйте, скажите пожалуйста, почему первую строку в ексель перезаписывает и конечный результат начинается со второго елемента? И как это побороть?
всё зависит от логики вашего скрипта. В файл лучше записывать один раз, сформировать весь документ в коде node js и один раз сохранить.
-
@Fox said in Записать в xlsx (эксель) через цикл:
@Semen said in Записать в xlsx (эксель) через цикл:
Здравствуйте, скажите пожалуйста, почему первую строку в ексель перезаписывает и конечный результат начинается со второго елемента? И как это побороть?
всё зависит от логики вашего скрипта. В файл лучше записывать один раз, сформировать весь документ в коде node js и один раз сохранить.
Не совсем понятно. Он же записывает одну и ту же переменную в ексель, только каждый элемент по очереди, каким то образом затирая значение первой, а дальше по порядку все отлично записывает...
-
@Semen said in Записать в xlsx (эксель) через цикл:
@Fox said in Записать в xlsx (эксель) через цикл:
@Semen said in Записать в xlsx (эксель) через цикл:
Здравствуйте, скажите пожалуйста, почему первую строку в ексель перезаписывает и конечный результат начинается со второго елемента? И как это побороть?
всё зависит от логики вашего скрипта. В файл лучше записывать один раз, сформировать весь документ в коде node js и один раз сохранить.
Не совсем понятно. Он же записывает одну и ту же переменную в ексель, только каждый элемент по очереди, каким то образом затирая значение первой, а дальше по порядку все отлично записывает...
В таком случае приложите тестовый проект
-
@Fox said in Записать в xlsx (эксель) через цикл:
@Semen said in Записать в xlsx (эксель) через цикл:
@Fox said in Записать в xlsx (эксель) через цикл:
@Semen said in Записать в xlsx (эксель) через цикл:
Здравствуйте, скажите пожалуйста, почему первую строку в ексель перезаписывает и конечный результат начинается со второго елемента? И как это побороть?
всё зависит от логики вашего скрипта. В файл лучше записывать один раз, сформировать весь документ в коде node js и один раз сохранить.
Не совсем понятно. Он же записывает одну и ту же переменную в ексель, только каждый элемент по очереди, каким то образом затирая значение первой, а дальше по порядку все отлично записывает...
В таком случае приложите тестовый проект
Спасибо за отклик. Проблема решилась добавлением к номеру строки +1, т.е. var row = worksheet.getRow(i+1);
-
Здравствуйте, вопрос- можно ли использовать exceljs-tf вместо exceljs? Выдает ошибку "Error: For node versions older than 10, please use the ES5 Import: https://github.com/exceljs/exceljs#es5-imports ", а т.к. я полный ноль в программировании, настроить то, что написано по ссылке не удалось.
-
@timoha98 said in Записать в xlsx (эксель) через цикл:
Здравствуйте, вопрос- можно ли использовать exceljs-tf вместо exceljs? Выдает ошибку "Error: For node versions older than 10, please use the ES5 Import: https://github.com/exceljs/exceljs#es5-imports ", а т.к. я полный ноль в программировании, настроить то, что написано по ссылке не удалось.
В таком случае не используйте модуль exceljs-tf