【问题标题】:Preserve the leading zeroes of data in excel without changing the original value在不更改原始值的情况下保留excel中数据的前导零
【发布时间】:2021-04-01 06:03:06
【问题描述】:

我正在尝试在 Excel 中保留数据的前导零。我遇到了几种解决方案,他们建议在值上附加一些内容,以便 excel 将其视为字符串。

例如: data + String.fromCharCode(8203)

通过这样做,“​”这是在 excel 中打印,这不是我想要的。此外,所有此类解决方案都在改变原始值。所以我试图在 excel 中保留前导零,同时防止数据发生变化。因此,在此过程中,我观察到我的 node.js 代码中的数字 (0123),当我将其附加到 CSV 文件中时,它正在转换为 (83)。同样,node.js 中的 (012) 与 CSV 中的 (10) 一样,因此也很出色。为什么会发生这种情况,它转换成哪种格式?请帮我解决这个问题,在此先感谢。

这是 node.js 代码:

const csvWriter = createCsvWriter({
    path : 'outputTaskA.csv',
    header : [
      {id : 'empID', title : 'empID'}
    ] 
});

const records = [
  {
    empID : 001234
  },
  {
    empID : 234
  },
  {
    empID : 345
  }
];

csvWriter.writeRecords(records).then(() => {
    console.log("created the file succesfully");
});

这是 output.csv 文件:

empID
668
234
345


【问题讨论】:

  • 在记事本中检查 csv 文件

标签: node.js excel csv


【解决方案1】:

要在 Excel 中保留前导零,您可以使用:

val1,="00123",val3

这是 Excel 特有的,不确定其他解析器将如何处理。

仅引用一个值并不能使其成为 csv 中的字符串(因为 csv 没有数据类型的概念),引号是为了保留字段内的嵌入分隔符。

【讨论】:

    【解决方案2】:

    它正在从八进制转换为十进制值。 Node 将所有以 0 开头的数字视为八进制表示的前缀。即:

    Welcome to Node.js v15.12.0.
    Type ".help" for more information.
    > 00123
    83
    

    难道不能双引号 empID 的值,以便节点将其视为字符串吗?例如

    
    const records = [
      {
        empID : "001234"
      },
      {
        empID : "234"
      },
      {
        empID : "345"
      }
    ];
    

    【讨论】:

    • 有可能,node把它们当作字符串。但 excel 将其视为数字并截断前导零。并感谢您的回答:)
    猜你喜欢
    • 2020-02-01
    • 2014-09-01
    • 1970-01-01
    • 2020-03-02
    • 2017-08-18
    • 1970-01-01
    • 2022-07-26
    • 2018-04-26
    • 1970-01-01
    相关资源
    最近更新 更多