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

时间:2018-12-11 14:39:20

标签: excel acumatica acumatica-kb

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

1 个答案:

答案 0 :(得分:1)

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");
}

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

有关此格式的更多详细信息,请参见: https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings#XFormatString

在Excel中,硬编码字符串'00000000'是一种特殊情况,其含义为'no color'。