我正在用 C# 编写一个 excel 加载项,除此之外,我需要获取单元格的 textcolor(如果可能的话,以 RGB 格式)。
Range 确实有一个Font.Color属性,但这只是一个双精度值,我不知道如何转换为 rgb 表示形式 - 实际上不知道它代表什么(我害怕整个东西的可怕文档,或者我我找错地方了)
似乎在网上找不到任何示例,只有如何设置颜色的示例,但使用ColorTranslator.FromOle
(而不是 ToOle)不起作用,因为它需要一个 int..
我正在用 C# 编写一个 excel 加载项,除此之外,我需要获取单元格的 textcolor(如果可能的话,以 RGB 格式)。
Range 确实有一个Font.Color属性,但这只是一个双精度值,我不知道如何转换为 rgb 表示形式 - 实际上不知道它代表什么(我害怕整个东西的可怕文档,或者我我找错地方了)
似乎在网上找不到任何示例,只有如何设置颜色的示例,但使用ColorTranslator.FromOle
(而不是 ToOle)不起作用,因为它需要一个 int..
我稍微修改了这段代码以获得:
Sub test()
Dim Col As Long
Dim R As Long, G As Long, B As Long
Col = ActiveCell.Font.Color
R = Col Mod 256
G = (Col \ 256) Mod 256
B = (Col \ 256 \ 256) Mod 256
Debug.Print R
Debug.Print G
Debug.Print B
End Sub
这是Chip Pearson的一些有趣的读物。
好了,我们开始了,对这些值进行更仔细的检查表明,double ofFont.Color
实际上只存储整数 RGB 值。
这很好用,因为 IEEE-754 双精度可以存储所有小于 2**53 的整数,所以我们对任何 RGBA 值的舍入都没有任何问题。对我来说似乎仍然是一个奇怪的错误,不知道这是怎么发生的。