等待Workbook.RefreshAll()(C#)
我想遍历一个目录(使用C#),并在那里刷新所有的Excel工作表。 我用:
Workbook.RefreshAll();
我如何等待Workbook.RefreshAll()
语句完成?
问题是:我打开FileA
, then Workbook.RefreshAll()
,然后打开FileB
– 刷新FileA
被终止。 我find的唯一解决办法就是打电话
System.Threading.Thread.Sleep(20000);
我发现非常不可爱的
有人知道更好的方法来等待吗?
更新31.05.2016 …
谢谢你的帮助。 我发现了以下解决scheme:
foreach (MSExcel.WorkbookConnection cnn in wb.Connections) { if (cnn.Type.ToString() == "xlConnectionTypeODBC") { cnn.ODBCConnection.BackgroundQuery = false; } else { cnn.OLEDBConnection.BackgroundQuery = false; } }
坦率
如果您浏览Workbook
并将所有QueryTable
的BackgroundQuery
属性设置为false
,则在继续之前, RefreshAll
应该完成。
foreach (Worksheet worksheet in workbook.Worksheets) { foreach (QueryTable table in worksheet.QueryTables) table.BackgroundQuery = false; } //This will finish executing before moving on workbook.RefreshAll();
也许你可以查询国家:
Application.CalculationState = xldone
有关文档,请看这里: http : //msdn.microsoft.com/en-us/library/office/bb220901(v=office.12).aspx