我正在尝试使用通过此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用来填充颜色的单元格,这将非常有帮助
答案 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'。