Ejemplo n.º 1
0
        public void WriteCellsAsync(GenerateCellValueDelegate GetValue)
        {
            m_ProgressWindow = new Controls.ExecuteProgress();
            m_ProgressWindow.AutoCloseAfterComplete = true;

            m_BackWorker_WriteCell.RunWorkerAsync(GetValue);
            m_ProgressWindow.Show();
        }
Ejemplo n.º 2
0
        private void BackWorkerWriteCell_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker          worker   = sender as BackgroundWorker;
            GenerateCellValueDelegate GetValue = e.Argument as GenerateCellValueDelegate;

            Microsoft.Office.Interop.Excel.Range selRang = Globals.ThisAddIn.Application.Selection as Microsoft.Office.Interop.Excel.Range;

            Int32 cellTotal = 0;

            if (selRang != null && selRang.Cells.Count > 0)
            {
                cellTotal = selRang.Cells.Count;
                for (Int32 i = 1; i <= cellTotal; i++)
                {
                    // 主要任务处理
                    Microsoft.Office.Interop.Excel.Range c = (Microsoft.Office.Interop.Excel.Range)selRang.Cells[i];
                    c.Value = GetValue(c).ToString();

                    // 提交处理进度
                    Int32 p = (Int32)(((Double)(i + 1) / cellTotal) * 100);
                    worker.ReportProgress(p);
                }
            }
        }