0

我正在用 C# 编写一个 excel 加载项,除此之外,我需要获取单元格的 textcolor(如果可能的话,以 RGB 格式)。

Range 确实有一个Font.Color属性,但这只是一个双精度值,我不知道如何转换为 rgb 表示形式 - 实际上不知道它代表什么(我害怕整个东西的可怕文档,或者我我找错地方了)

似乎在网上找不到任何示例,只有如何设置颜色的示例,但使用ColorTranslator.FromOle(而不是 ToOle)不起作用,因为它需要一个 int..

4

2 回答 2

2

我稍微修改了这段代码以获得:

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的一些有趣的读物。

于 2013-05-27T00:05:05.650 回答
0

好了,我们开始了,对这些值进行更仔细的检查表明,double ofFont.Color实际上只存储整数 RGB 值。

这很好用,因为 IEEE-754 双精度可以存储所有小于 2**53 的整数,所以我们对任何 RGBA 值的舍入都没有任何问题。对我来说似乎仍然是一个奇怪的错误,不知道这是怎么发生的。

于 2013-05-27T00:24:27.890 回答