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();
|
let val_trimmed = val.trim();
|
||||||
|
|
||||||
if !val_trimmed.is_empty() {
|
if !val_trimmed.is_empty() {
|
||||||
// 新增逻辑:尝试解析日期
|
// 1. 尝试解析日期
|
||||||
if let Some((dt, excel_fmt)) = try_parse_datetime(val_trimmed) {
|
if let Some((dt, excel_fmt)) = try_parse_datetime(val_trimmed) {
|
||||||
let serial = datetime_to_excel_serial(&dt);
|
let serial = datetime_to_excel_serial(&dt);
|
||||||
cell.set_value_number(serial);
|
cell.set_value_number(serial);
|
||||||
// 关键:设置单元格格式,这样 Excel 才会把它当日期看
|
// 关键:设置单元格格式,这样 Excel 才会把它当日期看
|
||||||
cell.get_style_mut().get_number_format_mut().set_format_code(excel_fmt);
|
cell.get_style_mut().get_number_format_mut().set_format_code(excel_fmt);
|
||||||
} else {
|
} else {
|
||||||
|
// 2. 写入文本
|
||||||
cell.set_value(val_trimmed);
|
cell.set_value(val_trimmed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -485,12 +486,13 @@ fn update_excel(
|
|||||||
let val_trimmed = val.trim();
|
let val_trimmed = val.trim();
|
||||||
|
|
||||||
if !val_trimmed.is_empty() {
|
if !val_trimmed.is_empty() {
|
||||||
// 新增逻辑:尝试解析日期
|
// 1. 尝试解析日期
|
||||||
if let Some((dt, excel_fmt)) = try_parse_datetime(val_trimmed) {
|
if let Some((dt, excel_fmt)) = try_parse_datetime(val_trimmed) {
|
||||||
let serial = datetime_to_excel_serial(&dt);
|
let serial = datetime_to_excel_serial(&dt);
|
||||||
cell_obj.set_value_number(serial);
|
cell_obj.set_value_number(serial);
|
||||||
cell_obj.get_style_mut().get_number_format_mut().set_format_code(excel_fmt);
|
cell_obj.get_style_mut().get_number_format_mut().set_format_code(excel_fmt);
|
||||||
} else {
|
} else {
|
||||||
|
// 2. 写入文本
|
||||||
cell_obj.set_value(val_trimmed);
|
cell_obj.set_value(val_trimmed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user