使用openxml从电子表格中读取公式

时间:2016-01-25 14:53:54

标签: c# excel openxml openxml-sdk

我正在使用Openxml库在C#中阅读电子表格,并且我使用 InnerText propierty解析 Cell 对象的值,返回字符串 null

Cell 出现公式时,我会得到电子表格中的文字文字,如下所示:

= Sheet 1中!A1Content

由以下组成:前公式(Sheet1!A1)+结果字符串(内容) 这也发生在以下基础知识中:= 2 + 24

我如何才得到公式的结果?

1 个答案:

答案 0 :(得分:1)

来自http://officeopenxml.com/文档:

  

对于公式,公式本身作为 c 的子元素存储在 f 元素中。       公式之后是元素中的实际计算值。

还有一个例子,这个单个单元格的开放式xml:

<c r="B9" s="3" t="str">
  <f>SUM(B2:B8)</f>
  <v>2105</v>
</c>

因此,在Cell元素中,Formula有一个子元素,CellValue有一个子元素。在您的情况下,单元格的InnerText属性是这两个属性的连接值。 如果您已经拥有所需的单元格,则可以执行以下操作:

static string GetValue(Cell cell)
{
   //The ? operator to make sure the 'CellValue' element exists, otherwise return null
   return cell.GetFirstChild<CellValue>()?.Text;
}