保存重新计算的Excel文件(Saving recalculated Excel file)

2019-09-30 06:21发布

我需要从我的工作表中删除所有的Excel公式(其结果替换公式),然后保存文件。 例如 - 而不是B3 + 13我想在细胞2013-04-11当我使用的OpenXML文件打开

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

它的工作原理 - 节能是没有公式后。 我需要在C#中相同的效果。 我试着在网上很多解决方案,但仍然没有希望。

                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”?

Answer 1:

选择包含您的数据的范围,然后复制并粘贴到的地方的价值观:

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);
}

这种复制您发布的文档的“替换他们的计算值公式”一节。 这是可能的选择所有表和复制/ Excel中本身特殊粘贴得到的结果,而不是公式,但我有一些问题,通过代码分组表的工作。



Answer 2:

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



文章来源: Saving recalculated Excel file