Javascript 如何在cypress中将excel转换为json并以编程方式写入json文件?

Javascript 如何在cypress中将excel转换为json并以编程方式写入json文件?,javascript,json,excel,promise,cypress,Javascript,Json,Excel,Promise,Cypress,我已经编写了将excel文件读入json的代码,但无法按预期读取它。它返回每行的数组。有人能帮我读取数据并将其正确写入json文件吗。提前谢谢。下面是我的代码: plugins/index.js文件 constxlsx=require(“节点xlsx”)。默认值; 常数fs=要求(“fs”); 常量路径=要求(“路径”); module.exports=(打开,配置)=>{ 关于(“任务”{ parseXlsx({filePath}){ 返回新承诺((解决、拒绝)=>{ 试一试{ const j

我已经编写了将excel文件读入json的代码,但无法按预期读取它。它返回每行的数组。有人能帮我读取数据并将其正确写入json文件吗。提前谢谢。下面是我的代码:

plugins/index.js文件

constxlsx=require(“节点xlsx”)。默认值;
常数fs=要求(“fs”);
常量路径=要求(“路径”);
module.exports=(打开,配置)=>{
关于(“任务”{
parseXlsx({filePath}){
返回新承诺((解决、拒绝)=>{
试一试{
const jsonData=xlsx.parse(fs.readFileSync(filePath));
解决(jsonData);
}捕获(e){
拒绝(e);
}
});
}
});
}
spec.js文件

description('API',()=>{
它('readf',()=>{
cy.parseXlsx(“/Cypress/Cypress/fixtures/data.xlsx”)。然后(
(jsonData)=>{
const rowLength=Cypress.$(jsonData[0].数据).length
for(让index=0;index
我希望json输出并写入json文件,如下所示:

{
“第1张”:[
{
“用户名”:“user1”,
“密码”:“密码1”
},
{
“用户名”:“user2”,
“密码”:“密码2”
},
{
“用户名”:“user3”,
“密码”:“密码3”
}
]
}

要将Excel工作表转换为JSON(或返回),我使用SheetJS

constxlsx=require('XLSX');
//读取文件
让工作簿=XLSX.readFile(文件名);
//阅读第一张纸(由第一张纸名标识)
let sheet=workbook.Sheets[workbook.SheetNames[0]];
//转换为JSON
让json=XLSX.utils.sheet_到_json(sheet);

请记住,尤其是在运行服务器应用程序时,
xlsx
使用阻塞方法,并会导致进程线程上的I/O等待。最好在一个线程中运行此异步。

您不能直接将excel转换为JSON并在代码中读取它。因为readFileSync会进入浏览器,它是一个基于服务器的函数

要解决此问题,请遵循我在以下存储库中提供的解决方案。 "https://github.com/Achudan/ExcelToJsonConverterForCypress"

(它对我们的团队非常有用,而且是一个简单的解决方案,而不是编写一个单独的EXCEL到JSON转换器)

在端口中运行节点应用程序,并在Cypress命令中发出cy.request


以上github链接的自述文件中给出了详细的解释。

如果excel中没有更大的数据集,并且只有用户名和密码数据,那么为什么不能将数据放在JSON中,为什么要把事情弄得更复杂。我只是想理解您的用例。@SrinuKodi,这只是示例文件。但是,在现实中,我有包含7列以上的excel文件。例如,我需要json,如:
{“Sheet1”:[{“Username”:“user1”,“password”:“password1”,“firstname”:“test1”,“lastname”:“gender”,“age”:“20”,“gender”:“M/F”,“location”:“abc”}]}
谢谢你的方法,但我没有处理服务器应用程序。因此,我得到了readFileSync的错误。因此,你能建议其他方法吗。我认为我的方法应该适用于非服务器应用程序。你得到了什么错误?嗯,应该是:)我们使用相同的库(,而不是节点xlsx)?发布更多代码。我尝试使用xlsx,结果显示_fs.readFileSync不是一个从字符串中解析JSON对象的函数,请使用。要解析每行上的一列,我建议使用一个解析该列的方法的数组。如果需要更多帮助,请将其作为一个新问题发布,并提供更多详细信息:)