@DannYLook
Программист

Есть код на node.js по записи данных в exel, почему-то функция по удалению листа происходит последний или повторно, кто знает как это исправить?

Заранее спасибо за внимание! Использую библиотеку xlsx, exceljs код:
const reader = require('xlsx')
const Excel = require('exceljs');
const workbook = new Excel.Workbook();

workbook.xlsx.readFile("i.xlsx").then(function() {
        const worksheet = workbook.getWorksheet("Остатки");
        console.log(worksheet);
        workbook.removeWorksheet(worksheet.id);
        return workbook.xlsx.writeFile( "i.xlsx");
});

const file = reader.readFile('./i.xlsx')
  .then((res) => {
      const ws = reader.utils.json_to_sheet(res.data)
      reader.utils.book_append_sheet(file,ws,"Остатки")
      reader.writeFile(file,'./i.xlsx')   
 

    }).catch((err) => {
        console.error(err);
    });


Часть из кода ниже с удалением:
const workbook = new Excel.Workbook();

workbook.xlsx.readFile("i.xlsx").then(function() {
        const worksheet = workbook.getWorksheet("Остатки");
        console.log(worksheet);
        workbook.removeWorksheet(worksheet.id);
        return workbook.xlsx.writeFile( "i.xlsx");
});

Код сделан так что сначала должна происходит функция с удалением листа "Остатки" а потом создание листа "Остатки", но почему-то происходит не как задумано и лист просто удаляется  и новый не появляется, если убрать код с удалением все работает. За любую помощь буду благодарён!
  • Вопрос задан
  • 250 просмотров
Решения вопроса 1
boratsagdiev
@boratsagdiev
Не очень понятна суть того, что вы пытаетесь сделать, но я попробую.

1. Первое чтение файла, там где получение, удаление и запись файла - происходит асинхронно.
2. Второе, чтение файла, где происходит получение данных xlsx-файла, превращение их в JSON, запись в лист Остатки и в файл i.xlsx - у вас вообще не должно отрабатывать, т.к. в библиотеке xlxs метод readFile - синхронный. Цитата из документации:

readFile uses fs.readFileSync under the hood:

Соответственно, метода .then там быть не может.

reader.readFile(...).then is not a function


Это для начала. Я в целом не понимаю задачу, зачем удалять лист, потом добавлять его, и в то же время в другом месте пытаться его прочитать, пропарсить в json, потом обратно в xlsx и записать в файл. Уточните задачу конкретнее, что вы пытаетесь сделать?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы