簡體   English   中英

保存重新計算的Excel文件

[英]Saving recalculated Excel file

我需要從我的工作表中刪除所有Excel公式(用其結果替換公式)然后保存文件。 例如 - 當我使用OpenXML打開文件時,而不是B3 + 13我希望在單元格中有2013-04-11

我找到了這篇文章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”?

選擇包含數據的范圍,然后復制並粘貼值:

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中自行復制/粘貼以獲得結果而不是公式,但是我通過代碼處理分組工作表時遇到了一些問題。

計算公式會保留公式及其結果。 如果要用其結果值覆蓋公式,則需要:
- 將其值設置為其值:Range.Value2 = Range.value2
或使用復制和粘貼特殊值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM