我將下面的一段代碼用作較大項目的一部分 - 該程序基本上基於從下拉框中選擇的工作表讀取電子表格 - 然後將結果分配給數據表 - 我有一個用於運行下面的函數來獲取單元格的內容並把它添加到DataTableOpenXML是否可以返回公式的結果
public string GetValue(Cell cell, SharedStringTablePart stringTablePart)
{
if (cell.ChildElements.Count == 0) return null;
//get cell value
string value = cell.ElementAt(0).InnerText;//CellValue.InnerText;
//Look up real value from shared string table
if ((cell.DataType != null) && (cell.DataType == CellValues.SharedString))
value = stringTablePart.SharedStringTable.ChildElements[Int32.Parse(value)].InnerText;
return value;
}
在我使用但是這會返回一個公式,而不是結果的電子表格循環。電子表格公式爲= Sheet1!A12,基本上,無論用戶輸入到Sheet1中,A12都應顯示在單元格中。現在電子表格中已經填入了信息,但程序不會僅僅根據公式得出結果。
一個例子是:表1 A12包含單詞「狗」,這意味着在Sheet2中單元格A4具有公式= Sheet1A12並應顯示「狗」(它在Excel中執行,但不在程序中)。
考慮到OpenXML已經存在,OpenXML是否能夠顯示結果?
如果用戶選擇了「計算選項」>「手動」,是否存儲在文件中的值? – bouvierr
@bouvierr我剛剛再次嘗試手動計算並將其存儲。我可以想象,情況並非總是如此,但是可以使用鏈接的SO帖子中的方法強制進行計算。 – LocEngineer
怎麼樣的文字值 - 我相信它的SharedStringTable,弄亂了這一點? –