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

同版本EPPlus下.NET Framework与.NET 8 API返回值不一致问题排查

解决方案

1. 强制设置单元格数值格式对齐原行为

针对参与拼接的数值单元格(如K9、K8),直接设置其显示格式,确保CONCATENATE拼接时使用指定精度的字符串:

// 针对单个单元格设置6位小数格式,匹配原API输出精度
worksheet.Cells["K9"].Style.NumberFormat.Format = "0.000000";
worksheet.Cells["K8"].Style.NumberFormat.Format = "0.000000";

如果需要批量处理所有数值单元格,可以遍历工作表中的数值型单元格统一设置格式。

2. 手动控制数值转字符串的精度

如果不想修改单元格格式,可在获取单元格结果时,手动对数值进行精度截断后再拼接:

// 读取单元格数值后,按原精度格式化
var k9Value = Math.Round((double)worksheet.Cells["K9"].Value, 6).ToString();
var k8Value = Math.Round((double)worksheet.Cells["K8"].Value, 6).ToString();
// 再自行拼接结果(替代直接读取公式单元格的结果)
var finalResult = $"Value k13: {k9Value}---Value L1:{worksheet.Cells["L1"].Value}---";

3. 修改公式使用TEXT函数控制精度

如果允许批量更新表格公式,将CONCATENATE中的直接单元格引用替换为TEXT函数指定精度:

CONCATENATE(TEXT(K9,"0.000000"),L9,"---",TEXT(K8,"0.000000"),L8,"---")

这样无论底层数值的实际精度如何,拼接时都会使用指定格式的字符串,彻底对齐输出。

4. 验证EPPlus计算配置

确认EPPlus的计算模式和精度相关配置与原.NET Framework环境一致:

using (var package = new ExcelPackage(fileStream))
{
    // 确保自动计算模式开启
    package.Workbook.CalcMode = ExcelCalcMode.Automatic;
    // 启用兼容模式的精度计算,对齐旧版本行为
    package.Workbook.CalculationOptions.PrecisionAndRoundingStrategy = ExcelPrecisionAndRoundingStrategy.Compatibility;
    package.Workbook.Calculate();
}

内容的提问来源于stack exchange,提问作者Caio Lucas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:46:06