0

我正在尝试编写一个脚本来帮助我吐出无聊的工作代码。

所以有时,我会得到一个 .csv 文件,指示我创建表格字段,有时一次最多 50 个!(使用 AL,一种 Business Central 编程语言。)

我试着写这个;

const fs = require('fs');
const path = require('path');
const csv = require('csv-parser');
const CreatesFile = fs.createWriteStream(path.resolve(__dirname, 'final.txt'), {
    flags: 'a' //flags: 'a' preserved old data
})

    fs.createReadStream(path.resolve(__dirname, 'AutomateVAR.csv'))
    .on('error', () => {
        // handle error
    })
    .pipe(csv())
    .on('data', (row) => {
        if (row["Var Type"] == "Text" || "Code") {
            CreatesFile.write( `field(; "${row["Var Name"]}"; ${row["Var Type"]}[${row["Var Length"]}]) {DataClassification = CustomerContent;} ` + '\r\n'); 
        }
         if (row["Var Type"] == "Boolean") {
            CreatesFile.write( `field(; "${row["Var Name"]}"; ${row["Var Type"]}) {DataClassification = CustomerContent;} ` + '\r\n');
        }
         if (row["Var Type"] == "Option")
        {
            CreatesFile.write( `field(; "${row["Var Name"]}"; ${row["Var Type"]}) { OptionMembers = ${row["Var Value"]};} ` + '\r\n');
        }
    })
    .on('end', () => {

    })

并有这个测试 .csv 文件;

Var Name,Var Type,Var Value,Var Length
Customer,Code,,20
Employee,Text,,50
Cash Customer,Boolean,,
Car Type,Option,"""One"",""Two""",

这个想法是读取 .csv 文件,遍历每一行,然后写入一个文本文件,然后我将在我正在处理的代码文件中传递该文件。听起来可能很无聊,但可以为我节省大量时间。我是一个菜鸟 Javascript/Node 开发人员,所以请原谅我的缺点。

运行代码后,text.txt中的输出为;

field(; "Customer"; Code[20]) {DataClassification = CustomerContent;} 
field(; "Employee"; Text[50]) {DataClassification = CustomerContent;} 
field(; "Cash Customer"; Boolean[]) {DataClassification = CustomerContent;} 
field(; "Cash Customer"; Boolean) {DataClassification = CustomerContent;} 
field(; "Car Type"; Option[]) {DataClassification = CustomerContent;} 
field(; "Car Type"; Option) { OptionMembers = "One","Two";} 

这是不正确的。正确的结果应该是;

field(; "Customer"; Code[20]) {DataClassification = CustomerContent;} 
field(; "Employee"; Text[50]) {DataClassification = CustomerContent;} 
field(; "Cash Customer"; Boolean) {DataClassification = CustomerContent;} 
field(; "Car Type"; Option) { OptionMembers = "One","Two";} 

高度赞赏指导。先感谢您!

4

1 回答 1

1

这一行:

if (row["Var Type"] == "Text" || "Code") {

应该:

if (row["Var Type"] == "Text" || row["Var Type"] == "Code") {
于 2020-07-30T00:44:17.053 回答