打开xml sdk,读取excel公式单元格

我有单元格C4中有公式= SUM(C2:C3)的excel文件。 我分别在单元格C2和C3中有值15和17。 以编程方式,我希望能够执行C4公式并返回值32(公式的结果)。

有人build议我应该使用OpenXml SDK。 因为这个代码将被Windows Azure网站托pipe和使用。

这是我的代码到目前为止,单元格不在C4中执行公式。

string filename = Server.MapPath("/") + "ExcelData.xlsx"; using (SpreadsheetDocument document = SpreadsheetDocument.Open(filename, true)) { document.WorkbookPart.Workbook.CalculationProperties.ForceFullCalculation = true; document.WorkbookPart.Workbook.CalculationProperties.FullCalculationOnLoad = true; Sheet sheet = document.WorkbookPart.Workbook.Descendants<Sheet>().SingleOrDefault(s => s.Name == "myRange1"); if (sheet == null) { throw new ArgumentException( String.Format("No sheet named {0} found in spreadsheet {1}", "myRange1", filename), "sheetName"); } WorksheetPart worksheetPart = (WorksheetPart)document.WorkbookPart.GetPartById(sheet.Id); int rowIndex = int.Parse("C4".Substring(1)); Row row = worksheetPart.Worksheet.GetFirstChild<SheetData>(). Elements<Row>().FirstOrDefault(r => r.RowIndex == rowIndex); Cell cell = row.Elements<Cell>().FirstOrDefault(c => "C4".Equals(c.CellReference.Value)); } 

 document.WorkbookPart.Workbook.CalculationProperties.ForceFullCalculation = true; document.WorkbookPart.Workbook.CalculationProperties.FullCalculationOnLoad = true; 

根据MSDN :

使用CellFormula (<f>)元素定义公式文本。 公式可以包含包含各种预定义函数的mathexpression式。 CellValue (<v>)元素根据上次计算公式的时间来存储caching的公式值。