保存重新计算的Excel文件

我需要从我的工作表中删除所有的Excel公式(replace公式与其结果),然后保存文件。 例如 – 而不是B3 + 13我想在单元格中使用OpenXML打开文件

我发现这篇文章http://office.microsoft.com/en-us/excel-help/replace-a-formula-with-its-result-HP010066258.aspx

它的作品 – 保存后没有公式。 我需要在C#中的相同效果。 我在互联网上尝试过很多解决scheme,但是依然没有希望

string source = @"C:\Source\doc.xlsx"; object Unknown = Type.Missing; Workbook doc = newApp.Workbooks.Open( source, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown, Unknown); newApp.Calculation = Microsoft.Office.Interop.Excel.XlCalculation.xlCalculationManual; doc.ForceFullCalculation = true; newApp.CalculateFull(); newApp.CalculateBeforeSave = true; doc.SaveAs("c:\\temp\\recalc.xlsx", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); doc.Close(); 

那么问题是什么? 为什么我可以看到“= DY3 + 1”而不是“2013-04-11”?

select包含您的数据的范围,然后复制并粘贴这些值:

 using Excel = Microsoft.Office.Interop.Excel; foreach (Excel.Worksheet ws in doc.Worksheets) { Excel.Range targetRange = (Excel.Range)ws.UsedRange; targetRange.Copy(Type.Missing); targetRange.PasteSpecial(Excel.XlPasteType.xlPasteValues, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, false, false); } 

这复制了您发布的文档中的“用他们的计算值replace公式”部分。 可以select所有工作表并复制/粘贴Excel中的特殊工具,以获得结果而不是公式,但是通过代码处理分组工作表时遇到了一些问题。

计算公式将保留公式及其结果。 如果你想用结果值覆盖公式,那么你需要:
– 将其值设置为其值:Range.Value2 = Range.value2
或使用复制和粘贴特殊值