作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图在将数据写入 Excel 工作表时显示进度条。但无法显示。
try
{
ShowProgressBarForExcelSheet();
i18NText = I18N.Xlate("PREPARING_EXCEL_SHEET", "Excel-Tabelle ist immer vorbereitet...", null, Assembly.GetExecutingAssembly());
oProgressBarFO.UpdateLogSearchStatus(i18NText);
workSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelWorkBook.Sheets[1];
excel.ActiveSheet.Cells[headerRow, 1] = "Datum/Zeit";
excel.ActiveSheet.Cells[headerRow, 3] = "Arbeitsplatz";
excel.ActiveSheet.Cells[headerRow, 5] = "Benutzername";
excel.ActiveSheet.Cells[headerRow, 7] = "Aktion";
excel.ActiveSheet.Cells[headerRow, 9] = "Zugriffstype";
excel.ActiveSheet.Cells[headerRow, 11] = "Klartext";
excel.ActiveSheet.Cells[headerRow, 13] = "Objekt Type";
excel.ActiveSheet.Cells[headerRow, 15] = "Patienten-Nr.";
excel.ActiveSheet.Cells[headerRow, 17] = "Fall-Nr.";
excel.ActiveSheet.Cells[headerRow, 19] = "Vorgangs-Nr.";
excel.ActiveSheet.Cells[headerRow, 21] = "Objekt Value";
}
有什么办法可以在写数据到excel sheet的时候显示进度条?用户无法编辑 excel 工作表或必须为用户禁用 excel 工作表,直到所有数据都填充到 excel 中
最佳答案
您可以使用 BackgroundWorker 高效地实现这一点。此处附有一个示例,展示了如何在 C# 中执行此操作:
private void button1_Click(object sender, EventArgs e)
{
int ProgressToBeupdated = 100;
BackgroundWorker WorkerThread = new BackgroundWorker();
WorkerThread.WorkerReportsProgress = true;
WorkerThread.DoWork += WorkerThread_DoWork;
WorkerThread.ProgressChanged += WorkerThread_ProgressChanged;
WorkerThread.RunWorkerAsync(new object());
}
void WorkerThread_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
void WorkerThread_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i < 100; i++)
{
Thread.Sleep(500);
(sender as BackgroundWorker).ReportProgress(i);
}
}
在这个示例中,我使用了一个按钮和一个进度条控件,它每半秒显示一次进度(基本上是通过让线程休眠直到这只是一个示例)。
因此,您可以为需要将数据写入 Excel 工作表的 DoWork 设置事件,在那里您可以计算任务后的百分比,然后使用 ReportProgress(int percentage) 更新要显示在表格中的百分比进度条。
您需要定义 ProgressChanged 事件,以便在 dowork 事件处理程序中调用 ReportProgress 函数时更新进度条中的值。
关于c# - 如何在C#中生成包含数据的Excel工作表时显示进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29411434/
我是一名优秀的程序员,十分优秀!