private void RunAnalysis(object sender, RoutedEventArgs e)
        {
            if (this.FileSelection.MultipleFilesChecked)
            {
                var filePaths = this.FileSelection.SelectedFiles;

                if (filePaths == null || filePaths.Length == 0)
                {
                    AlertManager.NoFileSelected();
                    return;
                }

                int count = filePaths.Select(excelFile => new ExcelWrapper(excelFile)).Select(excelWrapper => excelWrapper.GetCount()).Sum();

                this.Logger.Log(count + " entries!");
            }
            else
            {
                string filePath = this.FileSelection.SelectedFile;

                if (!File.Exists(filePath))
                {
                    AlertManager.NoFileSelected();
                    return;
                }

                var excelWrapper = new ExcelWrapper(filePath);

                this.Logger.Log(excelWrapper.GetCount().ToString());
            }
        }
Example #2
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 #3
0
        private static object ColumnConverted(ExcelWrapper excelWrapper, string column)
        {
            // ReSharper disable once CoVariantArrayConversion
            var jArray = new JArray(excelWrapper.GetValueRows(ExcelWrapper.ConvertStringColumnToNumber(column)));

            return(jArray);
        }
Example #4
0
        private void Convert(string filePath)
        {
            var excelWrapper = new ExcelWrapper(filePath);

            string typeOfJsonConvert = this.TypeOfJsonArrayConversionContainer.Children.OfType <RadioButton>()
                                       .First(r => r.IsChecked == true).DataContext.ToString();

            object json = null;

            switch (typeOfJsonConvert)
            {
            case "Rows":
            {
                json = RowConverter(excelWrapper, this.InputRow.Number - 1);
                break;
            }

            case "Columns":
            {
                json = ColumnConverted(excelWrapper, this.InputColumn.Text);
                break;
            }

            case "Excel":
            {
                json = ExcelConverter(excelWrapper);
                break;
            }
            }


            this.Output.OutputTextBox.Text = JsonConvert.SerializeObject(json, Formatting.Indented);
            this.Output.FileName           = excelWrapper.FileName.Split('.')[0] + ".json";
        }
Example #5
0
        private void RunMultipleFilesAnalysis(object sender, RoutedEventArgs e)
        {
            if (this.FileSelection.SelectedFiles == null)
            {
                AlertManager.NoFileSelected();
                return;
            }

            string[] filePaths = this.FileSelection.SelectedFiles;

            double sum = 0;

            foreach (string filePath in filePaths)
            {
                var excelWrapper = new ExcelWrapper(filePath);

                string firstColumn = this.FirstColumn.Text;

                int firstColumnNumber = ExcelWrapper.ConvertStringColumnToNumber(firstColumn);

                double[] firstColumnValues = excelWrapper.GetDoubleRows(firstColumnNumber);

                string fileName = Path.GetFileName(filePath);

                if (firstColumnValues == null)
                {
                    MessageBox.Show($"There is no column '{firstColumn}' in {fileName}");
                    return;
                }

                sum += firstColumnValues.Sum();
            }

            this.MultipleFilesOutput.Text = $"Summation of all excel files\n{sum}";
        }
Example #6
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 #7
0
        private void SumOperation()
        {
            var excelWrappers = this.FileSelection.SelectedFiles.Select(path => new ExcelWrapper(path)).ToArray();

            string column       = this.ColumnInput.Text;
            int    columnNumber = ExcelWrapper.ConvertStringColumnToNumber(column);

            double sum = excelWrappers.Sum(x => x.GetDoubleRows(columnNumber).Sum());

            this.Output.OutputTextBox.Text = sum.ToString("F2");
        }
Example #8
0
        private static object RowConverter(ExcelWrapper excelWrapper, int row)
        {
            string[] columns = excelWrapper.GetColumns();

            var jArray = new JArray();

            foreach (string column in columns)
            {
                jArray.Add(excelWrapper.GetValueRows(ExcelWrapper.ConvertStringColumnToNumber(column))[row]);
            }

            return(jArray);
        }
        private void FindDuplicatesAnalysis(ExcelWrapper[] excelWrappers, bool specificColumns)
        {
            foreach (var excelWrapper in excelWrappers)
            {
                var duplicates = new List <string>();

                string[] columns = specificColumns ? this.ColumnTextBox.GetColumns() : excelWrapper.GetColumns();

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

                    string[] cells = excelWrapper.GetStringRows(columnNumber)?.Where(cell => !string.IsNullOrEmpty(cell)).ToArray();

                    if (cells != null)
                    {
                        var cellEntries = new Dictionary <string, int>();

                        foreach (string cell in cells)
                        {
                            if (!cellEntries.ContainsKey(cell))
                            {
                                cellEntries.Add(cell, 1);
                            }
                            else
                            {
                                cellEntries[cell]++;
                            }
                        }

                        string checkingColumn = $"Checking column '{column}'";

                        duplicates.Add(checkingColumn);
                        duplicates.AddRange(from pair in cellEntries where pair.Value > 1 select $"'{pair.Key}' is entered {pair.Value} times");

                        if (duplicates.Last() == checkingColumn)
                        {
                            duplicates.Add("Nothing found!");
                        }
                    }
                    else
                    {
                        duplicates.Add($"There is no '{column}' column in {excelWrapper.FileName}");
                    }
                }

                string log = string.Join("\n", duplicates);

                this.Logger.Log($"{excelWrapper.FileName}\r\n" + log);
            }
        }
Example #10
0
        private static object ExcelConverter(ExcelWrapper excelWrapper)
        {
            string[] columns = excelWrapper.GetColumns();

            var jArray = new JArray();

            foreach (string column in columns)
            {
                // ReSharper disable once CoVariantArrayConversion
                jArray.Add(new JArray(excelWrapper.GetValueRows(ExcelWrapper.ConvertStringColumnToNumber(column))));
            }

            return(jArray);
        }
Example #11
0
        static void Main(string[] args)
        {
            ExcelWrapper wrapper = new ExcelWrapper();

            if (wrapper.OpenExcelFile(@"c:\1.xlsx", true))
            {
                string val = wrapper.GetCellValue("Лист1", 1, 1);
                if (wrapper.SetCellValue("Лист1", val + "X", 1, 1))
                {
                    string val2 = wrapper.GetCellValue("Лист1", 1, 1);
                }
            }
            wrapper.Close();
        }
Example #12
0
        static void Main(string[] args)
        {
            var watch     = new Stopwatch();
            var excelPath = "C:/Excel/test.xlsx";

            watch.Start();
            var bytes = ExcelWrapper.Export(new ExportExcel <Test>[] { new ExportExcel <Test>("DATA IMPORT", GenerateData()) });

            File.WriteAllBytes(excelPath, bytes);
            watch.Stop();
            Console.WriteLine($"Tiempo: {watch.Elapsed}");
            watch.Reset();

            watch.Start();
            var arrayBytes = File.ReadAllBytes(excelPath);
            //var arrayBytes = File.ReadAllBytes("C:/Excel/test2.xlsx");
            var resultExcel = ExcelWrapper.Import <Test>(arrayBytes);

            watch.Stop();

            try
            {
                var templatetPath = "C:/Excel/test_template.xlsx";
                var fileTemplate  = File.ReadAllBytes(templatetPath);
                var paramst       = new[] {
                    new TemplateData("nombre", "Michael Emir"),
                    new TemplateData("fecha", "12/08/1992"),
                    new TemplateData("correlativo", "CE-3450P"),
                    new TemplateData("ncuenta", "1209-9021-312"),
                    new TemplateData("valor", "1,900.75"),
                    new TemplateData("table", GenerateData())
                };
                var resultBytes = ExcelWrapper.ExportWithTemplate(new List <ExportTemplateExcel> {
                    new ExportTemplateExcel("TEST", paramst)
                }, fileTemplate);
                File.WriteAllBytes("C:/Excel/result_template.xlsx", resultBytes);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error: {ex.Message}");
            }

            Console.WriteLine($"Tiempo: {watch.Elapsed}");
            Console.Read();
        }
Example #13
0
        private void ConcatOperation()
        {
            var excelWrappers = this.FileSelection.SelectedFiles.Select(path => new ExcelWrapper(path));

            string column       = this.ColumnInput.Text;
            int    columnNumber = ExcelWrapper.ConvertStringColumnToNumber(column);

            var stringBuilder = new StringBuilder();

            foreach (var excelWrapper in excelWrappers)
            {
                string[] entries = excelWrapper.GetStringRows(columnNumber);

                foreach (string entry in entries)
                {
                    stringBuilder.Append(entry);
                }
            }

            this.Output.OutputTextBox.Text = stringBuilder.ToString();
        }
Example #14
0
        private void btnDocumentoRelatorio_Click(object sender, EventArgs e)
        {
            DataTable             dt = new DataTable();
            Action <ExcelWrapper> fncGeraHeaderExcel = (objExcel) =>
            {
                using (var context = new CadastroMotoristaContext())
                {
                    BindingSource bi = new BindingSource();
                    dt = context.Documentos.ToList().ToDataTable();
                    objExcel.GeraHeader(false, dt.Columns.Cast <DataColumn>()
                                        .Select(x => x.ColumnName)
                                        .ToArray());
                }
            };

            using (ExcelWrapper ex = new ExcelWrapper("Controle de Motoristas", "Documentos", "documentos"))
            {
                fncGeraHeaderExcel(ex);
                foreach (DataRow row in dt.Rows)
                {
                    uint colcnt = 0;

                    foreach (DataColumn dc in dt.Columns)
                    {
                        ex.AdicionaConteudo(row[dc].ToString(), colcnt++);
                    }
                    ex.IncrementaLinha();
                }
                ex.AjustaHeader();
                MemoryStream ms = new MemoryStream();
                ex.WriteToMemory(ms);
                string varq = MemoryStreamParaArquivo(ms, ".xlsx", true);
                if (varq != string.Empty)
                {
                    System.Diagnostics.Process.Start(varq);
                }
            }
        }
Example #15
0
        private void Convert(string filePath)
        {
            var excelWrapper = new ExcelWrapper(filePath);

            string[] columns = excelWrapper.GetColumns();

            string typeOfJsonConvert = this.TypeOfHtmlConversionContainer.Children.OfType <RadioButton>()
                                       .First(r => r.IsChecked == true).DataContext.ToString();

            string html = string.Empty;

            if (typeOfJsonConvert == "Table")
            {
                html = "<table>\r\n\t<tbody>\r\n\t\t<tr>" + columns
                       .Select(column =>
                               excelWrapper.GetValueRows(ExcelWrapper.ConvertStringColumnToNumber(column))[0])
                       .Aggregate(html, (current, propertyName) => current + $"\r\n\t\t\t<th>{propertyName}</th>");

                html += "\r\n\t\t</tr>";

                string[][] propertyValues = columns.Select(column =>
                                                           excelWrapper.GetValueRows(ExcelWrapper.ConvertStringColumnToNumber(column)).Skip(1).ToArray())
                                            .ToArray();

                var list = new List <List <string> >();

                foreach (string[] values in propertyValues)
                {
                    for (int j = 0; j < values.Length; j++)
                    {
                        if (list.Count >= j + 1)
                        {
                            list[j].Add(values[j]);
                        }
                        else
                        {
                            list.Add(new List <string> {
                                values[j]
                            });
                        }
                    }
                }

                html = list.Aggregate(html,
                                      (current, row) =>
                                      current +
                                      $"\r\n\t\t<tr>\r\n{string.Join("\r\n", row.Select(x => $"\t\t\t<td>{x}</td>"))}\r\n\t\t</tr>") +
                       "\r\n\t</tbody>\r\n</table>";
            }
            else if (typeOfJsonConvert == "List")
            {
                string[] propertyNames = columns.Select(column =>
                                                        excelWrapper.GetValueRows(ExcelWrapper.ConvertStringColumnToNumber(column))[0]).ToArray();

                string[][] propertyValues = columns.Select(column =>
                                                           excelWrapper.GetValueRows(ExcelWrapper.ConvertStringColumnToNumber(column)).ToArray())
                                            .ToArray();

                int rowsCount = propertyValues.Select(propertyValue => propertyValue.Length).Max();

                var list = new List <string>();

                for (int i = 0; i < rowsCount; i++)
                {
                    string ul = "<ul>";

                    for (int j = 0; j < propertyNames.Length; j++)
                    {
                        ul += $"\r\n\t<li>{propertyValues[j][i]}</li>";
                    }

                    list.Add(ul + "</ul>");
                }

                html = string.Join("\r\n", list);
            }

            this.Output.OutputTextBox.Text = html;
            this.Output.FileName           = excelWrapper.FileName.Split('.')[0] + ".html";
        }
Example #16
0
        private void RunColumnAnalysis(object sender, RoutedEventArgs e)
        {
            if (this.FileSelection.SelectedFiles == null)
            {
                AlertManager.NoFileSelected();
                return;
            }

            var operation = (OperationType)this.OperationSelector.SelectedIndex;

            string[] filePaths = this.FileSelection.SelectedFiles;

            var output = new List <string>();

            foreach (string filePath in filePaths)
            {
                var excelWrapper = new ExcelWrapper(filePath);

                string firstColumn  = this.FirstColumn.Text;
                string secondColumn = this.SecondColumn.Text;

                int firstColumnNumber  = ExcelWrapper.ConvertStringColumnToNumber(firstColumn);
                int secondColumnNumber = ExcelWrapper.ConvertStringColumnToNumber(secondColumn);

                double[] firstColumnValues  = excelWrapper.GetDoubleRows(firstColumnNumber);
                double[] secondColumnValues = excelWrapper.GetDoubleRows(secondColumnNumber);

                string fileName = Path.GetFileName(filePath);

                if (firstColumnValues == null)
                {
                    MessageBox.Show($"There is no column '{firstColumn}' in {fileName}");
                    return;
                }

                if (secondColumnValues == null)
                {
                    MessageBox.Show($"There is no column '{secondColumn}' in {fileName}");
                    return;
                }

                double[] newValues = new double[firstColumnValues.Length > secondColumnValues.Length
                    ? firstColumnValues.Length
                    : secondColumnValues.Length];

                switch (operation)
                {
                case OperationType.Divide:
                    for (int i = 0; i < newValues.Length; i++)
                    {
                        newValues[i] = firstColumnValues[i] / secondColumnValues[i];
                    }
                    break;

                case OperationType.Multiply:
                    for (int i = 0; i < newValues.Length; i++)
                    {
                        newValues[i] = firstColumnValues[i] * secondColumnValues[i];
                    }
                    break;

                case OperationType.Add:
                    for (int i = 0; i < newValues.Length; i++)
                    {
                        newValues[i] = firstColumnValues[i] + secondColumnValues[i];
                    }
                    break;

                case OperationType.Subtract:
                    for (int i = 0; i < newValues.Length; i++)
                    {
                        newValues[i] = firstColumnValues[i] - secondColumnValues[i];
                    }
                    break;
                }

                output.Add($"Results from '{fileName}':");
                output.Add(string.Join("\n", newValues));
            }

            this.ColumnOutput.Text = string.Join("\n", output);
        }
Example #17
0
        private void Convert(string filePath)
        {
            var excelWrapper = new ExcelWrapper(filePath);

            string[] columns = excelWrapper.GetColumns();

            string typeOfJsonConvert = this.TypeOfJsonConversionContainer.Children.OfType <RadioButton>()
                                       .First(r => r.IsChecked == true).DataContext.ToString();

            object json = null;

            if (typeOfJsonConvert == "Rows")
            {
                string[] propertyNames = columns.Select(column =>
                                                        excelWrapper.GetValueRows(ExcelWrapper.ConvertStringColumnToNumber(column))[0]).ToArray();

                string[][] propertyValues = columns.Select(column =>
                                                           excelWrapper.GetValueRows(ExcelWrapper.ConvertStringColumnToNumber(column)).Skip(1).ToArray())
                                            .ToArray();

                int jObjectCount = propertyValues.Select(propertyValue => propertyValue.Length).Max();

                var jsonObjects = new List <JObject>();

                for (int i = 0; i < jObjectCount; i++)
                {
                    var jsonObject = new JObject();

                    for (int j = 0; j < propertyNames.Length; j++)
                    {
                        jsonObject.Add(propertyNames[j], propertyValues[j][i]);
                    }

                    jsonObjects.Add(jsonObject);
                }

                json = jsonObjects;
                this.Output.OutputTextBox.Text = JsonConvert.SerializeObject(jsonObjects, Formatting.Indented);
            }
            else if (typeOfJsonConvert == "Columns")
            {
                var jsonProperties = (
                    from column in columns
                    let dataRows = excelWrapper.GetValueRows(ExcelWrapper.ConvertStringColumnToNumber(column))
                                   select new JProperty(dataRows[0], dataRows.Skip(1))
                    ).ToList();

                json = new JObject(jsonProperties);
            }
            else if (typeOfJsonConvert == "Excel")
            {
                var jsonData = (from column in columns
                                let columnNumber = ExcelWrapper.ConvertStringColumnToNumber(column)
                                                   select new JObject(new JProperty("Column", column), new JProperty("ColumnNumber", columnNumber),
                                                                      new JProperty("Data", excelWrapper.GetValueRows(columnNumber)))
                                ).ToList();

                json = jsonData;
            }
            else if (typeOfJsonConvert == "Array")
            {
                var jArray = new JArray();

                foreach (string column in columns)
                {
                    jArray.Add(excelWrapper.GetValueRows(ExcelWrapper.ConvertStringColumnToNumber(column)));
                }

                json = jArray;
            }


            this.Output.OutputTextBox.Text = JsonConvert.SerializeObject(json, Formatting.Indented);
            this.Output.FileName           = excelWrapper.FileName.Split('.')[0] + ".json";
        }
Example #18
0
        public static Statistics CalcStatistics(ExcelWrapper excelWrapper, MaterialMatrix materialMat)
        {
            Statistics ret = new Statistics();

#if !DEBUG
            try
#endif
            {
                if (materialMat == null || !materialMat.IsNotNegativ() || materialMat.CountNonNegativeEntrys() < 3)
                {
                    return(null);
                }
                MaterialMatrix tmpMaterialMatrix = materialMat.Clone();

                for (int colInd = 49; colInd < excelWrapper.GetRowCount(); colInd++)
                {
                    string[] obj          = excelWrapper.GetRow(colInd);
                    bool     isAvai       = false;
                    bool     isResolvable = false;
                    if (string.IsNullOrWhiteSpace(obj[0]))
                    {
                        throw new Exception();
                    }
#if !DEBUG
                    try
#endif
                    {
                        isAvai       = AvailabilityCheck.IsAvailable(obj, tmpMaterialMatrix);
                        isResolvable = AvailabilityCheck.CanResolve(obj);
                    }
#if !DEBUG
                    catch (Exception) { }
#endif
                    if (isAvai)
                    {
                        ret.countAllAvai++;
                        ret.allAvaiPumps.Add(obj);
                    }
                    ret.countAll++;
                    ret.allPumps.Add(obj);
                    if (obj[11] == "RKP" || obj[11] == "FRP")
                    {
                        ret.countRKP++;
                        ret.RKPPumps.Add(obj);
                        if (isAvai)
                        {
                            ret.countRKPAvai++;
                            ret.RKPAvaiPumps.Add(obj);
                        }
                    }
                    if (isResolvable)
                    {
                        ret.resolvable++;
                        ret.resolvablePumps.Add(obj);
                        if (isAvai)
                        {
                            ret.resolvableAvai++;
                            ret.resolvableAvaiPumps.Add(obj);
                        }
                    }
                    if (string.IsNullOrWhiteSpace(obj[0]))
                    {
                        throw new Exception();
                    }
                }
            }
#if !DEBUG
            catch (Exception) { return(ret); }
#endif
            return(ret);
        }