Example #1
0
        private string[][][] Export(ExcelWrapper[] excelWrappers, string[] column, bool skipEmpty = false)
        {
            int[] columnNumbers = column.Select(ExcelWrapper.ConvertStringColumnToNumber).ToArray();

            for (var i = 0; i < columnNumbers.Length; i++)
            {
                int columnNumber = columnNumbers[i];
                if (columnNumber == -1)
                {
                    AlertManager.Custom($"Column '{column[i]}' is not a valid column, and it will be skipped!");
                }
            }

            columnNumbers = columnNumbers.Where(x => x != -1).ToArray();

            if (columnNumbers.Length < 1)
            {
                AlertManager.Custom(NoValidColumns);
                return(null);
            }

            return((from excelWrapper in excelWrappers
                    select !skipEmpty
                    ? columnNumbers.Select(excelWrapper.GetStringRows).ToArray()
                    : columnNumbers.Select(excelWrapper.GetStringRows)
                    .Select(data => data.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray())
                    .ToArray()).ToArray());
        }
Example #2
0
        private void RunAnalysis(object sender, RoutedEventArgs e)
        {
            var firstExcelWrapper  = new ExcelWrapper(this.FirstFileSelection.SelectedFile);
            var secondExcelWrapper = new ExcelWrapper(this.SecondFileSelection.SelectedFile);

            if (firstExcelWrapper.FileName == secondExcelWrapper.FileName)
            {
                AlertManager.Custom("The excel files must be different!");
                return;
            }

            string[] columns = this.ColumnTextBox.GetColumns();

            var selectedComparisonType = (ComparisonType)Enum.Parse(typeof(ComparisonType), this.ComparisonTypePanel.Children.OfType <RadioButton>()
                                                                    .First(r => r.IsChecked == true).DataContext.ToString());

            var logs = new List <string>();

            string emptyOutput = string.Empty;

            if (selectedComparisonType == ComparisonType.FindSimilarities)
            {
                emptyOutput = "No similarities were found between both excels!";

                foreach (string column in columns)
                {
                    int columnNumber = ExcelWrapper.ConvertStringColumnToNumber(column);

                    string[] firstExcelRows = firstExcelWrapper.GetStringRows(columnNumber)
                                              .Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();
                    string[] secondExcelRows = secondExcelWrapper.GetStringRows(columnNumber)
                                               .Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();

                    logs.AddRange(firstExcelRows.Where(x => secondExcelRows.Contains(x))
                                  .Select(x => $"'{x}' was found in the both excels"));
                }
            }
            else if (selectedComparisonType == ComparisonType.FindDifferences)
            {
                emptyOutput = "No differences were found between both excels!";

                foreach (string column in columns)
                {
                    int columnNumber = ExcelWrapper.ConvertStringColumnToNumber(column);

                    string[] firstExcelRows = firstExcelWrapper.GetStringRows(columnNumber)
                                              .Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();
                    string[] secondExcelRows = secondExcelWrapper.GetStringRows(columnNumber)
                                               .Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();

                    logs.AddRange(firstExcelRows.Where(x => !secondExcelRows.Contains(x))
                                  .Select(x =>
                                          $"'{x}' was found in {firstExcelWrapper.FileName} but not in {secondExcelWrapper.FileName}"));
                }
            }

            this.Logger.Log(logs.Count > 0
                ? string.Join(Environment.NewLine, logs)
                : emptyOutput);
        }
Example #3
0
        private string[] CheckColumns(string[] columns, ExcelWrapper excelWrapper, string value, bool caseSensitive)
        {
            var output = new List <string>();

            foreach (string columnNumber in columns)
            {
                int column = ExcelWrapper.ConvertStringColumnToNumber(columnNumber);

                string[] rows = excelWrapper.GetStringRows(column);

                if (rows != null)
                {
                    for (int j = 0; j < rows.Length; j++)
                    {
                        string rowValue = rows[j];

                        if (rowValue != null && rowValue.Equals(value))
                        {
                            output.Add($"\"{rowValue}\" was found at {columnNumber}{j}");
                        }
                        else if (rowValue != null && !caseSensitive && string.Equals(rowValue, value, StringComparison.CurrentCultureIgnoreCase))
                        {
                            output.Add($"\"{rowValue}\" was found at {columnNumber}{j}");
                        }
                    }
                }
                else
                {
                    AlertManager.Custom($"There isn't {columnNumber} column in {excelWrapper.FileName}");
                }
            }

            return(output.ToArray());
        }
Example #4
0
        private void RunAnalysis(object sender, RoutedEventArgs e)
        {
            if (!this.FileSelection.FileIsSelected)
            {
                AlertManager.NoFileSelected();
                return;
            }

            if (string.IsNullOrWhiteSpace(this.FindValueInput.Text))
            {
                AlertManager.Custom("Value cannot be empty or white space only!");
                return;
            }

            string[] value = this.MultipleValuesCheck.IsChecked == true
                ? this.FindValueInput.Text.Split(',')
                : new[] { this.FindValueInput.Text };

            bool caseSensitive = this.CaseSensitiveCheck.IsChecked == true;

            string[] columns = this.SpecificColumnCheckBox.IsChecked == true?this.ColumnTextBox.GetColumns() : null;

            bool multipleFiles = this.FileSelection.MultipleFilesChecked;

            string[] filePaths =
                multipleFiles ? this.FileSelection.SelectedFiles : new[] { this.FileSelection.SelectedFile };

            this.FindInExcel(value, caseSensitive, columns, filePaths);
        }
Example #5
0
        private void ExportAnalysis(string[] filePaths, string separator)
        {
            if (filePaths == null || filePaths.Length == 0)
            {
                AlertManager.NoFileSelected();
                return;
            }

            foreach (string selectedFile in filePaths)
            {
                if (!File.Exists(selectedFile))
                {
                    AlertManager.Custom($"Cannot find {selectedFile}!");
                    return;
                }
            }

            var excelWrappers = filePaths.Select(filePath => new ExcelWrapper(filePath)).ToArray();

            string[] column = this.Columns.GetColumns();

            var data = this.Export(excelWrappers, column, this.SkipEmpty.IsChecked == true);

            if (data == null)
            {
                AlertManager.Custom("No data can be exported");
                return;
            }

            data = data.Select(x => x.Select(y => y.Select(z => z.Replace("\n", " ")).ToArray()).ToArray()).ToArray();

            var output = new List <string>();

            for (int i = 0; i < data.Length; i++)
            {
                if (this.AddFileName.IsChecked == true)
                {
                    output.Add("====");
                    output.Add(Path.GetFileName(filePaths[i]));
                }

                output.Add(string.Join(separator, this.ConvertDataToTable(data[i])));
            }

            this.Output.OutputTextBox.Text = string.Join("\r\n", output);
        }
Example #6
0
        private void ConvertHandler()
        {
            if (!this.FileSelection.FileIsSelected)
            {
                AlertManager.NoFileSelected();
                return;
            }

            if (!File.Exists(this.FileSelection.SelectedFile))
            {
                AlertManager.Custom("The file doesn't exist!");
                return;
            }

            string selectedFile = this.FileSelection.SelectedFile;

            this.Convert(selectedFile);

            this.LastPath = selectedFile;
        }