Как я могу преобразовать excel в json и программно записать в json файл на кипарисе? - PullRequest
0 голосов
/ 13 июля 2020

Я написал код для чтения файла Excel в json, но не смог прочитать его должным образом. Он возвращает массив каждой строки. Может ли кто-нибудь помочь мне правильно прочитать данные и записать их в файл json. Заранее спасибо. Ниже мой код:

плагины / индекс. js файл

const xlsx = require("node-xlsx").default;
const fs = require("fs");
const path = require("path");
module.exports = (on, config) => {
  on("task", {
    parseXlsx({ filePath }) {
      return new Promise((resolve, reject) => {
        try {
          const jsonData = xlsx.parse(fs.readFileSync(filePath));
          resolve(jsonData);
        } catch (e) {
          reject(e);
        }
      });
    }
  });
}

spe c. js файл

describe('API', () => {
    it('readf', () => {
        cy.parseXlsx("/Cypress/cypress/fixtures/data.xlsx").then(
            (jsonData) => {
                const rowLength = Cypress.$(jsonData[0].data).length
                for (let index = 0; index < rowLength; index++) {
                    console.log(jsonData[index].data)
                }
            }
        )
    }
)

Мне нужен вывод json и запись в json файл, как показано ниже:

{
    "Sheet1": [
        {
            "Username": "user1",
            "password": "password1"
        },
        {
            "Username": "user2",
            "password": "password2"
        },
        {
            "Username": "user3",
            "password": "password3"
        }
    ]
}

1 Ответ

1 голос
/ 14 июля 2020

Для преобразования листов Excel в JSON (и обратно) я использую Sheet JS s xlsx .

const XLSX = require('xlsx');

// read file
let workbook = XLSX.readFile(filename);

// read first sheet (identified by first of SheetNames)
let sheet = workbook.Sheets[workbook.SheetNames[0]];

// convert to JSON
let json = XLSX.utils.sheet_to_json(sheet);

Имейте в виду, особенно если запущен сервер app, xlsx использует методы блокировки и вызовет ожидание ввода-вывода в потоке вашего процесса. Лучше запустить этот asyn c в fork .

...