2013-12-10 176 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

相關問題