0
点赞
收藏
分享

微信扫一扫

前端使用xlsx时读取日期数据时数据错误

大家在使用xlsx读取文件转成json(使用sheet_to_json方法)时可能会遇到读取日期类型,但是xlsx读取到的不准确

设置raw为true时读取的是数字 raw为false时读取的是字符串 但是跟excel里的字符串并不一致 这时就要自己去处理了,有个前提条件调用sheet_to_json时设置dateNF: "yyyy-MM-dd hh:mm:ss"

话不多说,直接贴代码吧

	const baseYear = ["1899", "1900", "1904"]; // 是为了兼容时分秒类型
			// 遍历工作表中所有的单元格 为了处理日期类型的单元格
			for (let cell in worksheet) {
				if (Object.hasOwnProperty.call(worksheet, cell)) {
					if (cell.startsWith("!")) continue;
					const cellObj = worksheet[cell];
					if (cellObj.t === "d") {
						if (typeof cellObj.v === "string") {
							cellObj.w = cellObj.v;
						} else {
							const year = $TOOL.dateFormat(cellObj.v, "yyyy");
							// 如果baseYear里包含year代表他当前没有年份 只有时分秒
							if (baseYear.includes(year)) {
								// 自己项目里时间转换的方法
								cellObj.w = $TOOL.dateFormat(
									cellObj.v,
									"hh:mm:ss"
								);
							} else {
								// 年月日要用xlsx库里的,不然会差44秒,我是window系统,mac可能相差不同
								cellObj.w = SSF.format(
									"yyyy-mm-dd hh:mm:ss",
									cellObj.v
								);
							}
						}
					}
				}
			}

问题产生的原因就是导入读取文件时,并不知道哪一列是时期类型,如果已知那一列是日期类型就可以不用此方法,在生成完json以后去处理数据就好啦

举报

相关推荐

0 条评论