在C#中刷新Excel表

时间:2013-06-03 22:02:47

标签: c# excel ssis

我有一个excel文件,其中“工作表1”上的数据透视表和图表引用了“工作表2”中的数据,而这些数据又指向SQL Server表中的记录。

我编写了一个SSIS作业来填充底层SQL Server表,然后使用以下代码刷新excel表。

//At this point, sql server table is already populated with data.
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
 excelApp.DisplayAlerts = false;
 excelApp.Visible = false;
 Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath,
                                 System.Reflection.Missing.Value,
                                 System.Reflection.Missing.Value,
                                 System.Reflection.Missing.Value,
                                 System.Reflection.Missing.Value,
                                 System.Reflection.Missing.Value,
                                 System.Reflection.Missing.Value,
                                 System.Reflection.Missing.Value,
                                 System.Reflection.Missing.Value,
                                 System.Reflection.Missing.Value,
                                 System.Reflection.Missing.Value,
                                 System.Reflection.Missing.Value,
                                 System.Reflection.Missing.Value,
                                 System.Reflection.Missing.Value,
                                 System.Reflection.Missing.Value);

try
        {               
            excelWorkbook.RefreshAll();
            excelWorkbook.RefreshAll();
            excelWorkbook.RefreshAll();
            excelWorkbook.Save();
        }
        finally
        {
            excelWorkbook.Close(false, workbookPath, null);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(excelWorkbook);
            excelWorkbook = null;
            excelApp.Quit();
            System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
            excelApp = null;

问题是当我打开excel时,它仍然显示以前加载的数据。在我单击excel文件中的“全部刷新”后,数据将刷新。有没有任何万无一失的方法来使用C#刷新excel中的所有数据。

3 个答案:

答案 0 :(得分:1)

我可以使用XLRefresh.exe进行刷新 http://metacpan.org/pod/Win32::Excel::Refresh

答案 1 :(得分:0)

执行刷新后尝试将代码更改为

excelWorkbook.SaveCopyAS("Your File save location with FileName");

而不是

excelWorkbook.Save();

可以帮助你。

答案 2 :(得分:0)

以下是刷新Excel并运行连接到SQL Server / MS Access以填充数据的后台查询的代码

excelWorkbook.RefreshAll();
excelApp.Application.CalculateUntilAsyncQueriesDone(); // This condition will wait till background query execution is completed.

如果有帮助,请告诉我。