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()); }
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); }
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()); }
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); }
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); }
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; }