excel - 使用 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 用来为单元格填充颜色的库来做到这一点,那将非常有帮助
解决方案
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 来说是“无颜色”的意思。
推荐阅读
- mongodb - MongoDB聚合和投影
- reactjs - 使用 ReactJS 和 Express.js 使用单端口和双端口开发应用程序
- firebase - 输出 HTML 并将结果存储在 Firebase 托管中的功能
- r - 使用 Rcpp 删除矩阵行时出错
- mysql - MySQL 中使用 FIFO 动态 CTE 的复杂子查询
- html - 如何防止包含可能弄乱页面样式/模板的 html 标签的动态内容
- c# - Run one SqlCommand for two queries perfomance
- python - 用引号封装 unicode 字符串
- python - 为什么我的 elif 语句中的 replace 方法不能替换我试图在程序中替换的一个或多个字母?
- xml - XLST 拆分节点列表分组