【问题标题】:Casting Range.Value2 of Excel interop to string将 Excel 互操作的 Range.Value2 转换为字符串
【发布时间】:2015-05-14 07:10:05
【问题描述】:

我从 C# 应用程序的 Excel 工作表中导入一些值。一列基本上是文本,但可以包含任何值。我使用了以下内容:

Range range = ... // getting this from Excel, works fine
string myString = (string)range.Value2;

当单元格包含文本时,这是有效的。但是,例如,当它包含 123 时,调试器会为 range.Value2 显示 123.0,并且转换为字符串失败并出现异常。

我想知道,如何为各种单元格编写最通用的转换。至少是字符串和整数,可以是浮动内容。

【问题讨论】:

  • Value2 的类型和值到底是什么?异常消息是什么?
  • @SonerGönül 异常:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException 无法将双精度转换为字符串。 Value2 是动态的 :)
  • 所以,range.Value2.ToString();
  • @RezaArabQaeni 是的,我自己也找到了类似的答案,见下文,Excel 也经常返回空值
  • 仅供参考 - 当范围超过 1 个单元格时会爆炸,因为 .Value2 将返回一个 object[] 数组

标签: c# .net excel interop


【解决方案1】:

我找到了可能不太好但有效的解决方案:

myString = range.Value2 == null ? "" : range.Value2.ToString();

可能存在更好的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 2015-05-07
    • 2014-04-29
    • 2011-11-28
    • 1970-01-01
    相关资源
    最近更新 更多