使用Acumatica的导出方法用颜色填充Excel单元格

使用Acumatica的导出方法用颜色填充Excel单元格,excel,acumatica,acumatica-kb,Excel,Acumatica,Acumatica Kb,我正在尝试使用我在本文中找到的导出方法,以编程方式用颜色填充Excel的单元格。我注意到库中包含一个名为AddFill的方法,该方法具有以下参数AddFill(int startRow、int startColumn、int endRow、int endColumn、string fgColor、string bgColor、[bool doNotOverride=false]),但我设置为fgColor和/或bgColor的所有参数都会使单元格颜色变为全黑色。我试过“red”、“red”、“r

我正在尝试使用我在本文中找到的导出方法,以编程方式用颜色填充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使用的库用颜色填充单元格,这将非常有用。Acumatica库中有一个实用方法
PX.Export.Excel.Core.Utils.RgbToColor
,可以将.Net颜色类整数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");
}
基本上,可以通过调用参数为
x
的整数对象的
ToString
方法来实现预期的格式。我相信这会返回一个十六进制字符串形式的整数值

有关此格式的更多详细信息,请参见:

硬编码字符串“00000000”是一个特例,在Excel中表示“无颜色”