|
根因不是列宽,而是写入的日期值不对。 你传的是毫秒时间戳 1785807420000,而 LibXL/Excel 要的是 Excel 日期序列号(大约几万,不是 13 位时间戳)。用日期格式去显示超大数字时,Excel 就会一直显示 #,拉宽列也没用。 正确写法把时间戳先转成日期时间,再用 日期时间到数值() 写入: .版本 2
.局部变量 format, 类_格式
.局部变量 日期值, 双精度小数型
.局部变量 时间戳, 长整数型
时间戳 = 1785807420000 ' 13位毫秒时间戳
' 毫秒 → 秒 → 日期时间 → Excel数值
日期值 = 日期时间到数值 (时间戳_到时间 (到整数 (时间戳 ÷ 1000)))
format = book.添加格式 ()
format.自定义数字格式 (#EXCEL自定义数字_Date) ' 或写成 "yyyy-mm-dd hh:mm:ss"
sheet.置单元格数值或日期 (“B” + 到文本 (表格格号), , 日期值, format)
' 建议顺手设一下列宽
sheet.置列宽 (1, 1, 18) ' B列,按你模块实际方法名调整
如果已是 10 位秒级时间戳,就不要再除以 1000: 日期值 = 日期时间到数值 (时间戳_到时间 (时间戳))
时间戳_到时间 用精易模块里对应函数即可(名称可能略有不同)。 纯公式换算(不依赖时间戳转换函数)' 13位毫秒
日期值 = 时间戳 ÷ 1000.0 ÷ 86400.0 + 25569
' 10位秒
' 日期值 = 时间戳 ÷ 86400.0 + 25569
对照自检项目 错误做法 正确做法
写入值
1785807420000
日期时间到数值(...),约 46237 左右
格式
有格式也救不了错误数值
先转成 Excel 日期再套格式
列宽
拉宽仍显示 #
数值正确后,列宽不够才可能再出现 #
|