我有一个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中的所有数据。
答案 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.
如果有帮助,请告诉我。