2013-12-10 133 views
2

有谁知道是否可以在SpreadsheetLight中检索公式的数值?如果不是可以读取OpenXML中的公式作为数字?SpreadsheetLight从单元格公式中获取数值

我需要回到7.07的cellValue(8,1)

public static void TestSlWorkbook() 
    { 
    SLDocument sl = new SLDocument(); 
    sl.SetCellValue(1, 1, 1.01); 
    sl.SetCellValue(2, 1, 1.01); 
    sl.SetCellValue(3, 1, 1.01); 
    sl.SetCellValue(4, 1, 1.01); 
    sl.SetCellValue(5, 1, 1.01); 
    sl.SetCellValue(6, 1, 1.01); 
    sl.SetCellValue(7, 1, 1.01); 

    sl.SetCellValue(8, 1, "=Sum(A1:A7)"); 

    } 
+0

“评估()”在你的环境中工作吗? – 2013-12-10 15:30:33

+0

不,我正在使用spreadsheetlight.com的插件 – Ryan

+1

也许您应该使用Interop,它很容易,也是最常见的方式。我确定你会得到更多的帮助 –

回答

5

SpreadsheetLight没有计算引擎,因此没有对单元格公式(如当前状态)的评估。您得到的值是Excel以前计算出的值(这意味着它可能已经过期),或者0(因为SpreadsheetLight没有计算引擎,所以它默认为0或空字符串)。

披露:我写了SpreadsheetLight。

+2

感谢您撰写SpreadsheetLight。这很棒。 :) – Sam

+0

@Vincent Tan有没有办法使用Spreadsheetlight将工作表从一个工作簿复制到另一个工作簿? –

+0

是否有任何其他免费的Excel库(EPPlus和NPIO除外)提供计算引擎? –

0

SpreadsheetLight具有相当不错的文件在其网站上(作为CHM下载)。它并不适合我,所以我将它解压缩并直接访问html文件(chm是一种奇特的zip文件类型)。

您是否尝试过sl.GetCellValueAsDouble或SLDocument的其他方法?

+0

我试过GetCellValueAsDouble和GetCellValueAsDecimal,它返回0;我下载了chm文件但无法阅读。我会试试你的解压方式。谢谢, – Ryan

+0

Lou,我解压缩了chm文件,并用名称中的公式读取了所有内容,但没有找到任何内容。我开始认为它不可能! (还是)感谢你的建议。 – Ryan

+0

我做了一些关于公式的OpenXML计算的搜索,并且它停止存储公式,计算的最后一个值(如最后一次文档由Excel保存的时间)以及是否需要重新计算单元格的标志,但是没有计算引擎来评估公式。 – Lou

相关问题