首页 > 解决方案 > 如何将进度条和状态添加到没有像复制文件那样计数的进程?

问题描述

所以我发布了一个关于让我的示例项目工作的问题,它现在可以工作了。示例项目 这很好,因为在那个例子中,我有一个需要复制文件的生产项目,所以这对那个项目很有用。

但是这个问题是关于向我不清楚如何实施的过程显示进度条。

我使用 closedxml 读取一个 excel 文件,我将该文件读入数据表以执行一些过滤和其他操作,以便在我的表单上填充一些列表框,如何针对创建 5 来实现我在另一篇文章中的示例代码还是6个数据表?

我可以提供一些数据表创建方法,但是现在所有代码接近 600 行,还没有完成。所以下面是我正在使用的当前代码的精简示例。

    private void sample()
    {
        string plink = @"C:\Test\Sizes.xlsx";
        string[] DistinctDept = { "Dept Code", "Dept Description" };

        DataTable ListDept = GetDistinctRecords(LoadExceltoDatatable(plink), DistinctDept);
        ListDept.Columns.Add(new DataColumn("DeptCombo", typeof(string), "'('+[Dept Code] +') ' + [Dept Description]"));
        if (string.IsNullOrEmpty(ListDept.Rows[0]["Dept Code"].ToString()))
        {
            ListDept.Rows[0].Delete();
            ListDept.AcceptChanges();
        }
        lbDept.DataSource = ListDept;
        lbDept.DisplayMember = "DeptCombo";
        lbDept.ClearSelected();
    }

    public static DataTable GetDistinctRecords(DataTable dt, string[] Columns)
    {
        DataTable dtUniqRecords = new DataTable();
        dtUniqRecords = dt.DefaultView.ToTable(true, Columns);
        return dtUniqRecords;
    }

    public static DataTable LoadExceltoDatatable(string sizeoptcalc)
    {
        using (var wb = new XLWorkbook(sizeoptcalc, XLEventTracking.Disabled))
        {
            var ws = wb.Worksheet(1);
            var foundMonth = ws.Search("Month", System.Globalization.CompareOptions.OrdinalIgnoreCase);
            var monthRow = foundMonth.Last().Address;  // A11
            var lastcell = ws.LastCellUsed().Address; // BC3950
            DataTable dataTable = ws.Range(monthRow, lastcell).RangeUsed().AsTable().AsNativeDataTable();
            return dataTable;
        }
    }

这可以更改以报告进度吗?我的意思是在某些情况下,excel 文件很大,并且确实需要一些时间来填写我的列表框。

这里有更多的数据表创作,我想说明它们的整体进展

我试图报告进度的更多逻辑示例

标签: c#multithreadingprogress-barclosedxml

解决方案


推荐阅读