use*_*875 6 javascript node.js sheetjs
我正在尝试使用带有日期列的sheetjs节点模块读取XLSX文件。解析后我得到的数据格式不正确
文件数据为:2020年2月17日
但 xlsx 读完后,它给了我 2/17/20。它正在改变年份格式。我的要求是按原样获取数据。
示例代码:
var workbook = XLSX.readFile('a.xlsx', {
sheetRows: 10
});
var data = XLSX.utils.sheet_to_json(workbook.Sheets['Sheet1'], {
header: 1,
defval: '',
blankrows: true,
raw: false
});
Run Code Online (Sandbox Code Playgroud)
这里提出了一个使用流的解决方案,但同样可以与readFile. dateNF该问题中存在的问题是选项的值sheet_to_json需要一些转义字符。
例如:
const XLSX = require('xlsx');
const filename = './Book4.xlsx';
const readOpts = { // <--- need these settings in readFile options
cellText:false,
cellDates:true
};
const jsonOpts = {
header: 1,
defval: '',
blankrows: true,
raw: false,
dateNF: 'd"/"m"/"yyyy' // <--- need dateNF in sheet_to_json options (note the escape chars)
}
const workbook = XLSX.readFile(filename, readOpts);
const worksheet = workbook.Sheets['Sheet1'];
const json = XLSX.utils.sheet_to_json(worksheet, jsonOpts);
console.log(json);
Run Code Online (Sandbox Code Playgroud)
对于此输入:
将输出:
[
[ 'v1', 'v2', 'today', 'formatted' ],
[ '1', 'a', '14/8/2021', '14/8/2021' ]
]
Run Code Online (Sandbox Code Playgroud)
如果没有,dateNF: 'd"/"m","/yyyy'您会遇到与问题中描述的相同的问题:
[
[ 'v1', 'v2', 'today', 'formatted' ],
[ '1', 'a', '8/14/21', '8/14/21' ]
]
Run Code Online (Sandbox Code Playgroud)
两个潜在的不良副作用是:
cellText和cellDates选项readFileyyyy^mmm^dd请注意我在输入中的自定义格式- 该dateNF设置会覆盖任何自定义设置