使用openxml从电子表格中读取公式
我正在使用Openxml库阅读C#中的电子表格,并使用InnerText属性parsingCell对象的值,该属性返回一个String或null 。
当在单元格中存在一个公式时,我会在电子表格中获得文本文本,如下所示:
工作表Sheet1 =!A1Content
即由以前的公式(Sheet1!A1)+结果(内容)的string组成,并且这种情况也会发生,如:= 2 + 24
我怎样才能得到公式的结果?
从http://officeopenxml.com/文档:
对于公式,公式本身作为c的子元素存储在f元素中。 以下公式是元素内的实际计算值。
还有一个例子,这个打开xml的单个单元格:
<cr="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; }