public void ParseXmlTest() { var persons = ParserPerson.Instance().Parse("c:/temp/dataMar-28-2018.xml"); foreach (var pers in persons) { Assert.IsNotNull(pers.Name); } Assert.AreEqual(100, persons.Count); Debug.WriteLine(persons.Count); }
private void buttonParserPerson_Click(object sender, EventArgs e) { if (DateTime.Now > new DateTime(2017, 06, 01)) { return; } try { if (this.folderBrowserDialog1.ShowDialog() != DialogResult.OK) { return; } string[] files = Directory.GetFiles(this.folderBrowserDialog1.SelectedPath); Log("Начало обработки"); this.UseWaitCursor = true; foreach (var file in files) { try { Log("Выбран файл: " + Path.GetFileName(file)); if (Path.GetExtension(file) != ".xlsx") { Log("Формат файла не поддерживается: " + Path.GetExtension(file)); continue; } Log("Начало обработки"); this.UseWaitCursor = true; Log("Выбран файл: " + Path.GetFileName(file)); FileInfo newFile = new FileInfo(file); ExcelPackage _pck = new ExcelPackage(newFile); #region foreach foreach (var worksheet in _pck.Workbook.Worksheets) { int ColumnName = -1; int ColumnSex = -1; int ColumnEmail = -1; int ColumnTelephone = -1; int ColumnBrithday = -1; Log("Обрабатываем страницу: " + worksheet.Name); if (worksheet.Dimension == null) { Log("Страница пуста - пропускаем"); continue; } #region for_rowCnt var rowCnt = worksheet.Dimension.End.Row; var colCnt = worksheet.Dimension.End.Column; for (int i = 1; i <= colCnt; i++) { if (worksheet.Cells[1, i] == null) { continue; } if (worksheet.Cells[1, i].Value == null) { continue; } switch (worksheet.Cells[1, i].Value.ToString().Trim()) { case "Имя": ColumnName = i; break; case "Пол": ColumnSex = i; break; case "Email": ColumnEmail = i; break; case "Телефон": ColumnTelephone = i; break; case "Дата рождения": ColumnBrithday = i; break; } } #endregion string Notify = ""; if (ColumnName < 0) { Notify += "\nИмя"; } if (ColumnSex < 0) { Notify += "\nПол"; } if (ColumnEmail < 0) { Notify += "\nEmail"; } if (ColumnTelephone < 0) { Notify += "\nТелефон"; } if (ColumnBrithday < 0) { Notify += "\nДата рождения"; } if (Notify.Length > 0) { Notify = "Отсутствуют поля: " + Notify; Log(Notify); break; } string DirName = "ParserPerson"; if (!Directory.Exists(DirName)) { Directory.CreateDirectory(DirName); } string FileName = DateTime.Now.ToString("yyyy-MM-dd-HH-mm"); FileName = Directory.GetCurrentDirectory() + @"\" + DirName + @"\" + FileName + ".xlsx"; var existingFile = new FileInfo(FileName); #region using using (var package = new ExcelPackage(existingFile)) { var workbook = package.Workbook; var worksheet1 = workbook.Worksheets.Add(worksheet.Name); List <ParserPerson> theList = new List <ParserPerson>(); #region for for (int i = 1; i <= rowCnt; i++) { ParserPerson data = new ParserPerson(); data.Telephone = GetValueFromCell(worksheet.Cells[i, ColumnTelephone]); data.Name = GetValueFromCell(worksheet.Cells[i, ColumnName]); data.Email = GetValueFromCell(worksheet.Cells[i, ColumnEmail]); data.Sex = GetValueFromCell(worksheet.Cells[i, ColumnSex]); data.Brithday = GetValueFromCell(worksheet.Cells[i, ColumnBrithday]); data.Telephone = IndexMobileCore.Helper.Telephone.Normalize(data.Telephone); if (data.Telephone.Length < 10) { continue; } string _Code = data.Telephone.Substring(0, 3); string _Number = data.Telephone.Substring(3, 7); Log("_Code - " + _Code); Log("_Number - " + _Number); int Code = 0; int Number = 0; try { Code = Convert.ToInt32(_Code); Number = Convert.ToInt32(_Number); } catch { Log("Ошибка при определении Code и Number"); continue; } Log("Вызываем: IndexMobileCore.Helper.Telephone.Operator(" + Code.ToString() + ", " + Number.ToString() + ")"); var theDEF = DEF.GetOperator(Code, Number); if (theDEF != null) { Log("Получено значение: tel_operator = " + theDEF.Operator + " - " + theDEF.Region); data.Operator = theDEF.Operator; data.Region = theDEF.Region; } else { Log("Значение отсутствует"); } if (theList.Count(x => x.Email == data.Email) > 0) { continue; } theList.Add(data); } #endregion for (int i = 1; i <= theList.Count; i++) { var data = theList[i - 1]; worksheet1.Cells[i, 1].Value = data.Telephone; worksheet1.Cells[i, 2].Value = data.Operator; worksheet1.Cells[i, 3].Value = data.Region; worksheet1.Cells[i, 4].Value = data.Name; worksheet1.Cells[i, 5].Value = data.Email; worksheet1.Cells[i, 6].Value = data.Sex; worksheet1.Cells[i, 7].Value = data.Brithday; } package.Save(); Log("Сохранено: " + FileName); } #endregion break; } #endregion } catch (Exception ex) { Log("Ошибка при обработке файла: " + file + " " + ex.Message); } } Log("Завершено!"); } catch (Exception ex) { string err = ex.Message; err += ex.StackTrace; Log(err); } finally { this.UseWaitCursor = false; } }