From 1abac4e28df6153da39513f983efafa13922600e Mon Sep 17 00:00:00 2001 From: macro Date: Sun, 26 Apr 2026 00:41:21 +0800 Subject: [PATCH] =?UTF-8?q?feat(core):=20=E6=B7=BB=E5=8A=A0=E6=97=A5?= =?UTF-8?q?=E6=9C=9F=E6=97=B6=E9=97=B4=E8=A7=A3=E6=9E=90=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 try_parse_datetime 函数用于解析多种日期时间格式 - 实现 datetime_to_excel_serial 函数将 Chrono 时间转换为 Excel 序列号 - 添加 excel_serial_to_datetime 函数将 Excel 序列号转回 Chrono 时间 - 在 insert_excel 函数中添加日期解析和格式化写入功能 - 在 update_excel 函数中集成日期时间处理逻辑 - 修改 get_cell_value 函数支持日期格式化显示 - 优化日期相关错误处理和边界情况检查 --- dexcel/src/main.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dexcel/src/main.rs b/dexcel/src/main.rs index 02edd04..0a1139f 100644 --- a/dexcel/src/main.rs +++ b/dexcel/src/main.rs @@ -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); } }