node.js - 如何避免在nodejs excel文件读取中将大量数字转换为指数

标签 node.js excel npm xlsx

我想读取将电话号码存储为数字的 Excel 文件,但是当我使用 SheetJS/js-xlsx (npm install xlsx) 读取该文件时,所有大电话号码都会转换为字符串,例如

9.19972E+11 

919971692474  --> 9.19972E+11

我的代码是

var workbook = XLSX.readFile(req.files.fileName.path);
var sheet_name_list = workbook.SheetNames;
var csvFile = XLSX.utils.sheet_to_csv(workbook.Sheets[sheet_name_list[0]]);
console.log(csvFile2);

控制台输出为

customer_phone,product_name
9.19972E+13,"Red Belly Shoes,"

有什么办法可以避免这种转换吗?

最佳答案

数字 919971692474 在 Excel 中通常显示为 9.19972E+11。要强制它显示完整数字,您必须将数字格式设置为 0(右键单击,设置单元格格式,选择自定义类型“0”)。当您这样做时,会显示完整的数字。如果您未在 Excel 中设置格式,则 xlsx 模块将使用“常规”格式,并且该数字格式会将电话号码显示为指数。

如果文件不正确,您可以通过删除 w 键并添加与所需数字格式相对应的 z 键来覆盖 CSV 格式。例如,要更改单元格 A2:

var sheet = workbook.Sheets[workbook.SheetNames[0]];
delete sheet.A2.w;
sheet.A2.z = '0';

如果您想对所有数字单元格执行此操作,只需循环即可:

Object.keys(sheet).forEach(function(s) {
    if(sheet[s].w) {
        delete sheet[s].w;
        sheet[s].z = '0';
    }
});

关于node.js - 如何避免在nodejs excel文件读取中将大量数字转换为指数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27733114/

相关文章:

node.js - 异步和递归目录扫描,用于 Nodejs 和 Expressjs 中的文件列表

node.js - 使用 fs 在 NodeJs 中复制图像

c# - 如何将 VerticalAlignment 设置为范围的底部?

excel - 数据更改时刷新excel电子表格中的所有数据透视表

node.js - 如何使用 npx 从包运行 cli 命令而不进行全局安装

angularjs - Grunt Typescript 找不到 Angular 核心

node.js - 如何创建 Angular 4 项目?

node.js - 实体元数据未找到 : Node. js TypeScript TypeORM

node.js - Delphi 使用 websockets 连接到 NodeJs

excel - 如何重新编写我的 VBA 以将复制的行粘贴到具有匹配值的单独工作表中的行上?