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

标签 c# excel

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

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

我尝试执行以下操作:

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

最佳答案

让 ColorTranslator 为您完成工作要容易得多:

System.Drawing.Color col = System.Drawing.ColorTranslator.FromOle((int) r.Interior.Color);

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

System.Drawing.Color col = System.Drawing.ColorTranslator.FromOle((int)((double) r.Interior.Color));

关于c# - 如何在 C# 中将 Excel.Range.Interior.Color 转换为 System.Drawing.Color?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/945808/

相关文章:

excel - 为什么 For Each over Range.Columns(1) 不迭代单元格?

c# - 应用程序对象正在关闭异常

Excel 组合框 listfillrange 属性指向基于公式的命名范围有问题

excel - 打开工作表时如何以编程方式更改 Excel 2007 功能区上的标签值

excel - 在 Excel VBA 中定位命令按钮

c# - 引用类型——我们能看到实际的引用吗?

c# - Unity选择带参数的构造函数

c# - 如何计算linq中的重复项?

c# - 每个 .Next() 调用的随机数 [方法中的多个 .Next()]

c# - 为什么net Framework 4.5 azure部署忽略应用程序服务连接字符串