首页 > 解决方案 > 使用 Acumatica 的导出方法为 Excel 单元格填充颜色

问题描述

我正在尝试使用我通过这篇文章找到的导出方法以编程方式用颜色填充 Excel 的单元格。我注意到该库包含一个名为 AddFill 的方法,该方法具有以下参数AddFill(int startRow, int startColumn, int endRow, int endColumn, string fgColor, string bgColor, [bool doNotOverride = false]),但我设置为 fgColor 和/或 bgColor 的所有内容都会使单元格颜色变为全黑。我试过“red”、“Red”、“RED”、“#FF0000”、“(255,0,0)”,结果总是一样。如果有人知道如何使用 Acumatica 用来为单元格填充颜色的库来做到这一点,那将非常有帮助

标签: excelacumaticaacumatica-kb

解决方案


Acumatica 库中有一个实用方法PX.Export.Excel.Core.Utils.RgbToColor可以将值从 .Net Color 类整数 ARGB 值转换:

AddFill(startRow, startColumn, endRow , endColumn,
        PX.Export.Excel.Core.Utils.RgbToColor(System.Drawing.Color.AliceBlue.ToArgb()),
        PX.Export.Excel.Core.Utils.RgbToColor(System.Drawing.Color.FromArgb(255, 0, 0).ToArgb()));

该方法是公开的,因此您应该能够重复使用它,但如果您必须自己动手,这里是实现:

public static string RgbToColor(int rgb)
{
    if (rgb == 0) return "00000000";
    return rgb.ToString("x");
}

基本上可以通过ToString使用参数调用整数对象的方法来实现预期的格式x。我相信这会以十六进制字符串的形式返回一个整数值。

可以在此处找到有关此格式的更多详细信息: https ://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings#XFormatString

硬编码字符串 '00000000' 是一种特殊情况,对于 Excel 来说是“无颜色”的意思。


推荐阅读