通过.net控制excel

本文关键字:excel 控制 net 通过 | 更新日期: 2023-09-27 18:17:11

我正试图运行一个将数据插入表的存储过程。这样做之后,我刷新excel存储在我的本地机器(这个excel有数据连接到数据库)我有问题,因为刷新是消耗时间,之后我想保存excel -这是早期调用。我想从excel一旦刷新完成控制回来。

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

我一直在尝试使用异步代码,它阻塞当前线程并在另一个线程中刷新excel。这种方法的问题是线程会立即返回任务。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.s iscompleted调用一个saveExcel任务

但是这个条件总是返回true!

通过.net控制excel

可以从WorkbookWorksheets中抓取QueryTables。从那里,您可以刷新它们,通过false来禁用后台刷新。您还可以订阅AfterRefresh事件,以便在后台刷新完成时收到通知。