2016-05-13 65 views
0

我有一個很無奈的問題在那裏,每當我打電話 RefreshAll()Microsoft.Interop.Excel它不會刷新數據,當我在Excel中打開工作簿和我必須手動點擊全部刷新在excel內的按鈕...我甚至嘗試通過vba調用刷新,它仍然不刷新數據...我總是提示:我總是提示:C#:Microsoft.Interop.Excel刷新所有工作不

「數據透視表報告保存沒有底層數據。 刷新數據命令以更新報告。「

儘管我已經稱之爲「刷新所有命令」。

public void applyMacro(string excelFile) 
{ 
    var excelApplication = new Microsoft.Office.Interop.Excel.Application { Visible = false }; 
    var targetExcelFile = excelApplication.Workbooks.Open(excelFile); 
    try 
    { 
     string[] macros = addMacros(ref targetExcelFile); 
     for (int i = 0; i < 2; i++) 
      excelApplication.Run(macros[i]); 
     targetExcelFile.RefreshAll(); 
     targetExcelFile.Save(); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex); 
     Console.ReadKey(); 
    } 
    finally 
    { 
     excelApplication.Quit(); 
    } 
} 

,並在VBA嘗試添加調用刷新前以下內容:

For Each ws In Worksheets 
    For Each qt In ws.QueryTables 
    qt.Refresh BackGroundQuery:=False 
    next qt 
Next ws 

任何想法?

回答

0

您可以在數據透視表使用:

YourPivotTable.PivotCache().RefreshOnFileOpen = true; 
YourPivotTable.SaveData = true;