Редактирование файлов Excel в приложении Electron (Node.Js)

У меня есть электронное приложение, в котором мне нужно читать данные из файла Excel и записывать измененные данные. Мне также нужно сохранить форматирование файла Excel.

Файл Excel, который я использую, создан с помощью продукта Excel в подписке Microsoft 365 для бизнеса, версия 2005, сборка 12827.20268.

Я прочитал рекомендации по SO и решил попробовать [email protected]. Проблема в том, что эта библиотека выдает ошибку при попытке сохранить.

Вот пример кода, который я использую:

  modifyExcel(): void {
    // create a workbook variable
    const workbook = new Excel.Workbook();
    // read excel file from the path
    workbook.xlsx.readFile(this.excelFile)
      .then(() => {
        // access the excel sheet
        const worksheet = workbook.getWorksheet('My Sheet');
        const rowValues = ['Case 1', 'case 1 file', '', 2, 3, 4, 5];
        worksheet.addRow(rowValues);
        workbook.xlsx.writeFile(this.excelFile)
          .then(() => {
            // eslint-disable-next-line no-console
            console.log('saved to excel file successfully');
          });
      });
  }

Когда я выполняю код, я получаю исключение:

exceljs.min.js?e8ae:3 Uncaught (in promise) TypeError: Cannot read property 'F_OK' of undefined
    at eval (exceljs.min.js?e8ae:formatted:46534)
    at new Promise (<anonymous>)
    at Object.exists (exceljs.min.js?e8ae:formatted:46532)
    at eval (exceljs.min.js?e8ae:formatted:56173)
    at u (exceljs.min.js?e8ae:formatted:56173)
    at Generator.eval [as _invoke] (exceljs.min.js?e8ae:formatted:56173)
    at Generator.forEach.e.<computed> [as next] (exceljs.min.js?e8ae:formatted:56173)
    at n (exceljs.min.js?e8ae:formatted:56173)
    at s (exceljs.min.js?e8ae:formatted:56173)
    at eval (exceljs.min.js?e8ae:formatted:56173)

Я отладил код, и исключение возникает в строке записи файла.

        workbook.xlsx.writeFile(this.excelFile)

Кто-нибудь видел что-нибудь подобное? Если да, то каково было ваше решение.


person Tibi    schedule 25.06.2020    source источник


Ответы (1)


Ваша версия NodeJS устарела, вам нужно будет обновить ее версию.

См. Это обсуждение: https://github.com/ionic-team/ionic-cli/issues/2341

и https://github.com/hexojs/hexo-deployer-git/issues/126

person Lajos Arpad    schedule 25.06.2020
comment
Извините за задержку с ответом .. Не думаю, что это все. Я использую Node 12.13.0. Конечно, он немного старше 12.18.2, представленного сегодня на (nodejs.org), но не намного старше. Проблема с github, о которой вы упоминаете, где-то посередине указывает, что он работает нормально с узлом 7. - person Tibi; 03.07.2020