feat(core): 添加日期时间解析功能

- 新增 try_parse_datetime 函数用于解析多种日期时间格式
- 实现 datetime_to_excel_serial 函数将 Chrono 时间转换为 Excel 序列号
- 添加 excel_serial_to_datetime 函数将 Excel 序列号转回 Chrono 时间
- 在 insert_excel 函数中添加日期解析和格式化写入功能
- 在 update_excel 函数中集成日期时间处理逻辑
- 修改 get_cell_value 函数支持日期格式化显示
- 优化日期相关错误处理和边界情况检查
This commit is contained in:
macro
2026-04-26 00:41:21 +08:00
parent e9fe98b1f6
commit 1abac4e28d
+4 -2
View File
@@ -446,13 +446,14 @@ fn insert_excel(
let val_trimmed = val.trim();
if !val_trimmed.is_empty() {
// 新增逻辑:尝试解析日期
// 1. 尝试解析日期
if let Some((dt, excel_fmt)) = try_parse_datetime(val_trimmed) {
let serial = datetime_to_excel_serial(&dt);
cell.set_value_number(serial);
// 关键:设置单元格格式,这样 Excel 才会把它当日期看
cell.get_style_mut().get_number_format_mut().set_format_code(excel_fmt);
} else {
// 2. 写入文本
cell.set_value(val_trimmed);
}
}
@@ -485,12 +486,13 @@ fn update_excel(
let val_trimmed = val.trim();
if !val_trimmed.is_empty() {
// 新增逻辑:尝试解析日期
// 1. 尝试解析日期
if let Some((dt, excel_fmt)) = try_parse_datetime(val_trimmed) {
let serial = datetime_to_excel_serial(&dt);
cell_obj.set_value_number(serial);
cell_obj.get_style_mut().get_number_format_mut().set_format_code(excel_fmt);
} else {
// 2. 写入文本
cell_obj.set_value(val_trimmed);
}
}