public void StartSplit(SplitFileParameters p) { this.Parameters = p; BackgroundWorker bw_ExcelReader = new BackgroundWorker(); bw_ExcelReader.DoWork += Bw_ExcelReader_DoWork; bw_ExcelReader.RunWorkerCompleted += Bw_ExcelReader_RunWorkerCompleted; this.ProgressChanged?.Invoke(null, new ProgressChangedEventArgs(0, "Чтение файла...")); bw_ExcelReader.RunWorkerAsync(p); }
private void SplitFile(Office.SplitFileParameters splParams) { SetControlsEnabled(false); manager = new Office.SplitManager(mnuUseMultiThreads.Checked); manager.ProgressChanged += Manager_ProgressChanged; manager.SpliterCompleted += Manager_SpliterCompleted; groupBox4.Enabled = true; this.PrevFinishedParameters = null; TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal, Handle); TaskbarManager.Instance.SetProgressValue(0, 100, Handle); manager.StartSplit(splParams); }
internal List <string> GetSplitValues(SplitFileParameters splitParams) { List <string> splitValues = new List <string>(); try { InitializeExcelApplication(); this.xlWorkBook = IExcelProcessor.OpenWorkbook(this.xlApp, splitParams.FilePath, true); Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[splitParams.SheetIndex]; object val = string.Empty; for (int i = splitParams.RowBegin; i <= splitParams.RowEnd; i++) { val = xlWorkSheet.Range[splitParams.ColumnSplit + i].Value; if (val != null) { string value = val.ToString().ToUpper().Trim(); if (value?.Length != 0) { splitValues.Add(value); } } } xlWorkBook.Close(); ExitExcelApplication(); splitValues = splitValues.Distinct().ToList(); splitValues.Sort(); return(splitValues); } catch { if (xlWorkBook != null) { xlWorkBook.Close(); } if (xlApp != null) { ExitExcelApplication(); } throw; } }
private void Bw_ExcelReader_DoWork(object sender, DoWorkEventArgs e) { List <string> list = new List <string>(); SplitFileParameters p = (SplitFileParameters)e.Argument; using (Office.UsingExcel usXl = new Office.UsingExcel()) { list = usXl.GetSplitValues(p); } if (list.Count == 0) { throw new Exception("Пустой диапазон или ошибка чтения критериев"); } e.Result = list; }
internal SplitThread(SplitFileParameters splitParameters) { Parameters = splitParameters; }