【问题标题】:C# interop Excel: is possible to set NumberFormat like Value2?C# interop Excel:可以像 Value2 一样设置 NumberFormat 吗?
【发布时间】:2020-05-05 15:51:38
【问题描述】:

我正在尝试使用 C# 在 Excel 中设置 NumberFormat 以获得相当大的范围。它的大表,逐个单元格地制作耗费太多时间。

我尝试过类似设置 Value2 的范围:

 rng = ws.get_Range("H" + 2, "S" + 2);
 rng.NumberFormat = numberFormat;

其中 numberFormat 是具有格式化字符串的对象数组(如“0.00”、“0.0000”、...) 看起来这行不通,因为在我看来,NumberFormat 只是整个 Range 的一个属性。

你知道如何让它快速,而不是逐个细胞的方法吗? 谢谢!

【问题讨论】:

  • 您使用什么库与 Excel 交互?
  • 野刺:大部分互操作都基于 Excel UI 操作。在 UI 中执行此类操作的唯一方法是“选择性粘贴:格式”。互操作对象模型中是否有类似的东西?
  • @Flydog57 是的,你可能是对的。我将使用 C# 中的 pasteSpecial 函数,正如这里提到的:link here in StackOverflow 缺点是,至少一个我必须逐个单元格地填充格式数据。另一个,必须有相同的数据模式,我想在其上应用我的 pasteSpecial 函数。可能正如你所说,没有更简单的方法了:)谢谢。
  • 你是在对单行的单元格做这个吗?或者,您是对多行中的单元格执行此操作吗?如果是后者,请逐列而不是逐行进行格式设置。
  • @HagashenNaidu 我不使用任何自定义库。

标签: c# excel


【解决方案1】:

我忘了认识你们,我通过已经放在这里的解决方案解决了这个问题(我感到羞耻)

How to specify format for individual cells with Excel.Range.set_Value()

我只是稍微修改了 Drew Shafer (thanx man) 的解决方案。 根据我的研究,这是通过互操作实现 excel 的最佳解决方案。

除了 Excel 的限制之外,他的解决方案真的很优雅。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多