You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js读取Excel时间值:如何将数值转为12:30格式?

解决Excel时间值读取为数值的问题

Excel里的时间其实是按一天的比例存储的小数(比如12:30对应0.520833...,代表一天已经过了52.0833%),所以直接读取会得到数值。要转成12:30这种格式,有两种简单方法:

方法一:读取时启用cellDates选项

在readFile里加上cellDates: true配置,时间单元格会直接返回Date对象,之后你可以自行格式化这个Date:

const XLSX = require('xlsx');

// 读取时开启cellDates选项
const workbook = XLSX.readFile('file.xlsx', { cellDates: true });
 
var allPages = [];
workbook.SheetNames.forEach(function(sheetName) {
  var XL_row_object = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
  allPages.push(XL_row_object);
});

// 格式化Date对象为HH:mm格式
const formatTime = (date) => {
  const hours = String(date.getHours()).padStart(2, '0');
  const minutes = String(date.getMinutes()).padStart(2, '0');
  return `${hours}:${minutes}`;
};

console.log(formatTime(allPages[0][1].time));

方法二:用SSF工具直接转换数值

xlsx库自带SSF(Spreadsheet Format)工具,可以直接把Excel的时间数值转成指定格式的字符串:

const XLSX = require('xlsx');

const workbook = XLSX.readFile('file.xlsx');
 
var allPages = [];
workbook.SheetNames.forEach(function(sheetName) {
  var XL_row_object = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
  allPages.push(XL_row_object);
});

// 使用SSF.format将数值转成HH:mm格式
const timeValue = allPages[0][1].time;
const formattedTime = XLSX.SSF.format('hh:mm', timeValue);
console.log(formattedTime); // 输出12:30

两种方法都能解决问题:如果需要后续对时间做计算,用方法一的Date对象更方便;如果只是需要字符串格式,方法二更直接。

内容的提问来源于stack exchange,提问作者Pro Medya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 17:44:55