首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C#中将Excel.Range.Interior.Color转换为System.Drawing.Color?

如何在C#中将Excel.Range.Interior.Color转换为System.Drawing.Color?
EN

Stack Overflow用户
提问于 2009-06-03 16:49:33
回答 3查看 15.6K关注 0票数 8

我有一个excel工作表,其中一些单元格具有一些背景颜色。我需要这种颜色的html代码,因此我想转换为Excel.Range.Interior.Color格式或System.Drawing.Color。

这样做之后,我将使用System.Drawing.ColorTranslator.ToHtml(System.Drawing.Color)来获取要在html标记中使用的颜色。

我尝试了以下操作:

代码语言:javascript
复制
Excel.Range r = (Excel.Range)m_objRange[2, 2];
System.ComponentModel.TypeConverter converter = System.ComponentModel.TypeDescriptor.GetConverter(r.Interior.Color);
               MessageBox.Show(""+converter.ConvertTo(r.Interior.Color,typeof(System.Drawing.Color)));

但是我得到一个错误,我无法将System.Double转换为System.Drawing.Color

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-03 16:58:33

Excel.Range.Interior.Color返回的值是颜色的长整型值。

示例

'#000000等于0

'#FFFFFF等于16777215

您需要将十进制值转换为十六进制。从那里,很容易转换为RGB。(分组为2个八位字节,并转换回十进制) :)

票数 4
EN

Stack Overflow用户

发布于 2009-06-08 13:07:38

让ColorTranslator为您做这项工作要容易得多:

代码语言:javascript
复制
System.Drawing.Color col = System.Drawing.ColorTranslator.FromOle((int) r.Interior.Color);

当您在Visual Studio中使用自动生成的代理对象(而不是常规的互操作项目)编写Excel项目时,您需要将r.Interior.Color转换为double,然后再转换为int:

代码语言:javascript
复制
System.Drawing.Color col = System.Drawing.ColorTranslator.FromOle((int)((double) r.Interior.Color));
票数 17
EN

Stack Overflow用户

发布于 2020-01-15 07:46:49

这就是我如何使用函数,简单地替换蓝色和红色字节。Vb.net中的用法示例:

代码语言:javascript
复制
Imports Microsoft.Office.Interop

Public Class Form1

    Dim Ex_Ap As Excel.Application
    Dim Ex_Wb As Excel.Workbook
    Dim Ex_Ws As Excel.Worksheet

    Function Excel_Color_Get(ByVal i As Int32) As Color
        Static c As Color
        c = Color.FromArgb(i)
        Return Color.FromArgb(c.B, c.G, c.R)
    End Function

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Ex_Ap = New Excel.Application
        Ex_Ap.Visible = True
        Ex_Wb = Ex_Ap.Workbooks.Add
        Ex_Ws = Ex_Wb.Worksheets(1)
        Ex_Ws.Cells(7, 6).Value = "???"
        Ex_Ws.Cells(7, 6).interior.color = Color.Pink
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        Try
            TextBox1.BackColor = Excel_Color_Get(Ex_Ws.Cells(7, 6).interior.color)
        Catch ex As Exception
            TextBox1.Text = ex.ToString
        End Try
    End Sub

End Class
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/945808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档