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:
+4
-2
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user