You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

德国服务器上Aspose Worksheet解析十进制数忽略点分隔符问题

问题原因

  • 区域文化不一致:Sitecore 手动触发任务时,线程会继承当前登录用户的区域配置(通常为en-US),但计划任务默认使用服务器操作系统的区域文化,德国服务器默认是de-DE。de-DE的数值规则是点作为千分位分隔符,逗号作为小数分隔符,和你文件使用的en-US格式(点为小数分隔符,逗号为千分位)完全相反。
  • CSV解析阶段就出错:你初始化CSV类型的LoadOptions时没有指定解析用的文化,Aspose.Cells默认使用当前线程的文化解析CSV内容,所以原文件中的2074.927会被de-DE文化错误识别为2074*1000 + 927 = 2074927,这就是DoubleValue从一开始就错误的核心原因,后续再做格式转换也无法修正已经解析错误的数值。
  • 数值误识别为日期:同样是因为de-DE文化的日期格式匹配规则,12.7这类数值会被Aspose自动识别为日期类型,导致类型判断错误。

解决方案

直接从解析源头上指定正确的解析规则,不需要在解析后再做复杂的数值修正:

1. 修正CSV LoadOptions配置

在初始化.dat/.csv对应的LoadOptions时,明确指定解析用的文化为en-US,同时可关闭自动日期转换避免数值被误识别为日期:

else if (filename.EndsWith(".dat") || filename.EndsWith(".csv"))
{
    loadOptions = new Aspose.Cells.LoadOptions(LoadFormat.CSV);
    // 明确指定CSV解析使用en-US文化,匹配文件的数值格式规则
    loadOptions.CultureInfo = new CultureInfo("en-US", false);
    // 关闭自动将数值识别为日期,避免12.7这类值被误转为日期类型
    loadOptions.ConvertDateTimeData = false;
}

2. 移除后续冗余的数值修正逻辑

修改后Aspose在加载Workbook阶段就会正确解析数值,cellInfo.DoubleValue会返回正确的数值,你后续新增的尝试修复数值的代码可以完全删除,恢复原来的读取逻辑即可。

验证说明

修改后无论当前线程是何种区域文化,Aspose解析CSV时都会使用你指定的en-US文化,计划任务和手动触发都会得到一致的正确结果。


内容的提问来源于stack exchange,提问作者Erica Stockwell-Alpert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:15:04