0

我正在尝试运行将数据插入表的存储过程。之后,我正在刷新存储在本地机器中的 excel(此 excel 与数据库有数据连接)我遇到了问题,因为刷新很耗时,之后我想保存 excel - 被调用早期的。刷新完成后,我想从 excel 中取回控制权。

我可以通过C#读取excel的状态吗?

我一直在尝试使用异步代码来阻止当前线程并刷新另一个线程中的 excel。这种方法的问题是线程立即返回(task.iscompleted 正在返回 true),即使刷新仍在运行。

我怎样才能避免这种情况?

还:

  • 我可以单独刷新工作表吗?
  • 刷新完成后,我可以将控制权交还给 .NET 吗?

这是刷新任务的代码:

    private static async Task refreshExcelAsync(Excel.Workbook sampleWorkBook)
    {

        Task t = new Task
        (
            () =>
            {
                sampleWorkBook.RefreshAll();

            }
        );
        t.Start();

        await t;
    }

我正在使用以下方法调用此函数:

 Task refreshExcelTask = refreshExcelAsync(sampleWorkBook);
 Task t = await Task.WhenAny(refreshExcelTask);

在此调用之后,我根据条件 t.IsCompleted 调用 saveExcel 任务

但这个条件总是返回真!

4

1 回答 1

1

您可以QueryTablesWorksheets. Workbook从那里,您可以刷新它们,通过false禁用后台刷新。您还可以订阅AfterRefresh事件以在后台刷新完成时收到通知。

于 2013-06-06T16:10:59.793 回答