コード例 #1
0
ファイル: SplitManager.cs プロジェクト: Jugius/SplitExcel
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
ファイル: SplitManager.cs プロジェクト: Jugius/SplitExcel
        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;
        }
コード例 #5
0
ファイル: SplitThread.cs プロジェクト: Jugius/SplitExcel
 internal SplitThread(SplitFileParameters splitParameters)
 {
     Parameters = splitParameters;
 }