Aspose.NET生成Excel报表:波捷文化下负数红色字体失效求助
解决方案
问题根源
- 格式字符串不匹配区域规则:波兰(pl-PL)和捷克(cs-CZ)文化中,数字格式的千分位分隔符是空格,小数点是逗号,你当前硬编码的
#,##0,00;[Red]#,##0,00会导致格式解析异常,负数的颜色标记无法生效。 - 全局字体颜色覆盖格式规则:你设置了单元格全局
fontColor=255(红色),这会覆盖数字格式中针对负数的颜色规则,导致正负数字字体颜色混淆。
修复步骤
- 根据区域动态生成格式字符串:针对波兰/捷克文化和其他文化分别定义符合规范的数字格式。
- 移除全局字体颜色设置:让数字格式中的颜色规则单独生效,仅保留背景色设置。
修改后的代码示例
// 获取当前用户的文化信息 var currentCulture = System.Globalization.CultureInfo.CurrentCulture; string numberFormat; // 根据文化动态匹配数字格式 if (currentCulture.Name.Equals("pl-PL") || currentCulture.Name.Equals("cs-CZ")) { // 波兰/捷克格式:千分位用空格,小数点用逗号,负数红色 numberFormat = "# ##0,00;[Red]# ##0,00"; } else { // 其他文化格式:千分位用逗号,小数点用句号,负数红色 numberFormat = "#,##0.00;[Red]#,##0.00"; } // 应用格式与样式 dataCell[exportUtil.constants.cell.numberFormat] = numberFormat; dataCell[exportUtil.constants.cell.cellType] = "number"; dataCell[exportUtil.constants.cell.colorBackground] = 14474460; // 移除全局字体颜色设置,避免覆盖格式中的颜色规则 // dataCell[exportUtil.constants.cell.fontColor] = 255;
额外验证
生成报表后,右键单元格选择「设置单元格格式」,检查「数字」选项卡的自定义格式是否与代码中生成的一致,确认负数部分已正确标记[Red]。
内容的提问来源于stack exchange,提问作者sajesh Nambiar
相关产品推荐
相关产品推荐

