【问题标题】:How to avoid erasing the grid line color(default light gray) of excel sheet after changing the background of a cell in C#, ASP.NET?如何避免在C#,ASP.NET中更改单元格背景后删除excel表格的网格线颜色(默认浅灰色)?
【发布时间】:2023-03-12 22:41:01
【问题描述】:

我更改单元格颜色的示例代码是这样的。 range 是指单元格范围。

range.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Yellow);

如果我尝试将单元格颜色改回白色。我正在使用这个。

range.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.White);

但这会擦除我的单元格范围网格线(线条的默认颜色为灰色)并且所有内容都变为白色。即只有“范围”网格线变为白色,所有其他单元格都具有默认的 excel 网格颜色。 谢谢

【问题讨论】:

  • 欢迎来到 Stack Overflow!从 ASP.NET 或其他服务器技术使用 Office 互操作是一个可怕的想法。这些 API 是为在桌面应用程序中使用而编写的,用于自动化 Office(一套桌面应用程序)。服务器应用程序在许多方面都不同,这使得在其中使用 Office Interop 是一个非常非常糟糕的主意。它也不受 Microsoft 支持,并且可能违反您的 Office 许可证。见Considerations for server-side Automation of Office
  • @JohnSaunders 谢谢:)。因为我想通过源代码访问 excel,所以我使用了 ASP.net。只是教育目的。谢谢你的信息
  • 好的,您应该使用桌面应用程序来使用 Office 自动化(控制台、Windows 窗体或 WPF)。

标签: c# asp.net excel


【解决方案1】:

System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Yellow);出现问题是因为单元格区域的内部颜色实际上不是白色(它只是显示为白色)。默认情况下,每个单元格实际上都是透明的 (-4142)。

所以当你想把它设置回“正常”时这样做:

range.Interior.Color = -4142

编辑:最好使用常量,-4142 等于 xlNone。

匿名类型 我不明白为什么这对你不起作用?你能完善你的问题吗?我尝试了以下方法,效果很好..

const Int32 transparent_Color = -4142;
//Set Yellow
var Rng = ActiveSheet.Range["D5:E7"];
Rng.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Yellow);

//Set transparent (gridlines come back, so long as you haven't got other code that is interacting with your cells)
var Rng = ActiveSheet.Range["D5:E7"];
Rng.Interior.Color = transparent_Color;

【讨论】:

  • 如您所说设置单元格的背景颜色效果很好。非常感谢。但是将其设置为单元格边框不会产生任何结果。我首先将颜色更改为黄色,然后尝试将 -4142 应用于单元格以显示每个单元格的网格线。但它不起作用。你能建议任何方法吗
  • @Jeremy xlNone 给出错误。找不到关键字
  • @Jeremy const xlJezza As BigInt = MEGA_LOAD
  • @Jeremy 加油,我以为每个人的脑子里都有 Jon Skeet 级别的彩虹表,它可以立即查找数字的潜在价值,无论有多大。
  • okii...现在我明白了。你第一时间回答了我的问题。我对网格线、默认颜色和其他颜色感到困惑。非常感谢
【解决方案2】:

技巧:打开 Excel > 开发工具栏 > 记录宏 > 选择/突出显示范围 > 将背景颜色更改为黄色 > 将背景颜色更改为白色。现在将 Style 设置为 Normal

停止录制宏。

然后按 Alt + F11 进入 VBA 编辑器并查看模块 1 中的代码。

只需将该代码转换为 C# - 它在 C# 中与在 VB 中的对象模型几乎完全相同。

【讨论】:

  • 我试过了。但是我对使用宏感到困惑,因为我对此一无所知。但在 C# 源代码中,我使用了属性“Normal”。它将整个单元格设置为默认值。这意味着其中的值也会消失。
  • 不是white,而是xlNone,它是-4142,它看起来是透明的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
  • 2014-04-05
  • 1970-01-01
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多