【问题标题】:How to read a cell value from Excel that contains a function in C#如何从 Excel 中读取包含 C# 中的函数的单元格值
【发布时间】:2014-07-03 22:05:25
【问题描述】:

我正在编写一个从 Excel 文件中读取数据的 C# 应用程序。在我尝试从使用公式的单元格中读取数据之前,一切都运行顺利。

我正在从工作表中提取数据并尝试添加累积数量,所以在一个循环中,我正在使用:

cntr = Cell(row, column); 

注意:我是在解释而不是复制我的实际代码。

无论如何,如果实际的单元格值包含一个数字,这是可行的,但如果单元格包含一个函数,它会返回字符串

"=SUM(A1:A5)"

我不确定如何在我的 C# 代码中执行此操作以检索该单元格的实际值。

【问题讨论】:

  • 附带说明:Interop 真的很慢而且容易出错,你可能想使用像 EPPLUS 这样的库,这比 interop 的年龄要快
  • 我肯定会研究这个,可能是另一个项目,因为我已经深入这个项目了。感谢您的建议。

标签: c# excel visual-studio io


【解决方案1】:

试试

Cell(a,b).Value

而不仅仅是Cell(a,b)


另外,下面的方法应该可以工作

Excel.Range objRange = (Excel.Range)objSheet.Cells[rowN,colN];
variableName = objRange.get_Value(System.Missing.Type).ToString();

你可以根据你的数据类型修改它

【讨论】:

  • 我尝试了这种方法,但由于某种原因,我收到了对象不包含“值”定义的错误。也许我的互操作文件是错误的?我不确定它缺少什么,或者我真的缺少程序集参考。
  • 另外,您可能想看看之前在 SO 上发布的这个解决方案。似乎是一个类似的问题。 stackoverflow.com/questions/5714724/…
  • 同样的问题。我将再次查看我的互操作文件,看看我是否遗漏了什么。
  • 是的,让我知道我发布的新编辑是否有效。如果是这样那就太好了,否则我会删除这个答案,因为如果它不起作用,它不值得 +1 代表。
  • 确实如此。我的程序集引用犯了一个愚蠢的错误。我正在使用命名空间 Microsoft.Office.Interop.Excel,但不知道我可以将其更改为“使用 Excel=Microsoft.Office.Interop.Excel”。起初我收到错误 Excel 未定义。我写它的方式: variableName = (Cell(row, col) as Excel.Range).Value;感谢您的帮助!
猜你喜欢
  • 2015-04-08
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 2020-07-08
  • 2021-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多