Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过dotnet控制excel?_C#_.net_Excel_Async Await_Vba - Fatal编程技术网

C# 通过dotnet控制excel?

C# 通过dotnet控制excel?,c#,.net,excel,async-await,vba,C#,.net,Excel,Async Await,Vba,我正在尝试运行一个将数据插入表的存储过程。完成此操作后,我正在刷新存储在本地计算机中的excel(此excel与数据库有数据连接) 我遇到了一些问题,因为刷新需要花费时间,之后我想保存excel,因为excel很早就会被调用。我想在刷新完成后从excel中获取控制权 我可以通过C#读取excel的状态吗 我一直在尝试使用异步代码来阻止当前线程并刷新另一个线程中的excel。这种方法的问题是,即使刷新仍在运行,线程仍会立即返回(task.iscompleted返回true) 我怎样才能避免这种情况

我正在尝试运行一个将数据插入表的存储过程。完成此操作后,我正在刷新存储在本地计算机中的excel(此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任务


但这种情况总是会变为真

您可以从
工作簿
工作表
中获取
查询表
。从那里,您可以刷新它们,传递
false
以禁用它们。您还可以订阅后台刷新完成时将收到通知的事件。

您的代码表明您已经通过.NET控制Excel。那么,有什么方法可以通过.net控制excel呢?确切的意思是?我只是在做一个refreshAll(),如果可以的话,我想单独刷新工作表,刷新完成后,我想在dotnet web应用程序中重新获得当前无法获得的控件。作为Excel的负责人,尽管服务器组件的情况本应发生变化,在服务器上运行时可能会出现严重的扩展和线程问题。