public Revise(ItemFileInfo halvaCardInfo, List <ItemFileInfo> terminalFiles, BackgroundWorker backgroundWorker) { this.halvaCardInfo = halvaCardInfo ?? throw new ArgumentNullException("halvaCardInfo"); this.terminalFiles = terminalFiles ?? throw new ArgumentNullException("terminalFiles"); this.backgroundWorker = backgroundWorker ?? throw new ArgumentNullException("backgroundWorker"); currentProgress = 0; }
public static void ReadCsvFileContent(ItemFileInfo itemFileInfo) { using (FileStream fs = new FileStream(itemFileInfo.FullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { using (StreamReader reader = new StreamReader(fs, Encoding.GetEncoding("windows-1251"))) { using (CsvReader csvReader = new CsvReader(reader)) { itemFileInfo.FileContents = csvReader.GetRecords <FileContent>().ToList(); } } } }
public MainWindowViewModel() { ListFilesTerminal = new ObservableCollection <ItemFileInfo>(); GridMainVisibility = Visibility.Visible; GridProgressVisibility = Visibility.Hidden; if (Debugger.IsAttached) { halvaCardReportFile = new ItemFileInfo( @"\\mskv-fs-01\MSKV Files\Управление информационных технологий\07_Аналитический отдел\FAQ\Сверка данных по картам Халва\Примеры\Февраль\" + @"ООО _Клиника ЛМС__7704544391_И_01.03.2019.csv"); ListFilesTerminal.Add(new ItemFileInfo( @"\\mskv-fs-01\MSKV Files\Управление информационных технологий\07_Аналитический отдел\FAQ\Сверка данных по картам Халва\Примеры\Февраль\Сбер\" + @"7704544391_17133645_5026412390406_M02 - сочи.xlsx")); ListFilesTerminal.Add(new ItemFileInfo( @"\\mskv-fs-01\MSKV Files\Управление информационных технологий\07_Аналитический отдел\FAQ\Сверка данных по картам Халва\Примеры\Февраль\Сбер\" + @"7704544391_E4017003Q25527DO_4848334753986_M02 - Каменск.xlsx")); ListFilesTerminal.Add(new ItemFileInfo( @"\\mskv-fs-01\MSKV Files\Управление информационных технологий\07_Аналитический отдел\FAQ\Сверка данных по картам Халва\Примеры\Февраль\ВТБ\" + @"m_-_ООО_Клиника_ЛМС_-ret_innxxx5391 - сущевка, фрунзенская.xlsx")); ListFilesTerminal.Add(new ItemFileInfo( @"\\mskv-fs-01\MSKV Files\Управление информационных технологий\07_Аналитический отдел\FAQ\Сверка данных по картам Халва\Примеры\Февраль\ВТБ\" + @"m_01-02-2019-28-02-2019_ООО_Клиника_ЛМС_-ret_innxxx4391 - Казань.xlsx")); ListFilesTerminal.Add(new ItemFileInfo( @"\\mskv-fs-01\MSKV Files\Управление информационных технологий\07_Аналитический отдел\FAQ\Сверка данных по картам Халва\Примеры\Февраль\ВТБ\" + @"m_01-02-2019-28-02-2019_ООО_Клиника_ЛМС_-ret_innxxx4391 - Питер.xlsx")); ListFilesTerminal.Add(new ItemFileInfo( @"\\mskv-fs-01\MSKV Files\Управление информационных технологий\07_Аналитический отдел\FAQ\Сверка данных по картам Халва\Примеры\Февраль\ВТБ\" + @"m_01-02-2019-28-02-2019_Филиал_ООО_Клиника_ЛМС_в_г_Краснодаре-ret_innxxx4391 - краснодар.xlsx")); ListFilesTerminal.Add(new ItemFileInfo( @"\\mskv-fs-01\MSKV Files\Управление информационных технологий\07_Аналитический отдел\FAQ\Сверка данных по картам Халва\Примеры\Февраль\ВТБ\" + @"m_15-02-2019-15-02-2019_Филиал_ООО_Клиника_ЛМС_в_г_Уфе-ret_innxxx4391 - Уфа.xlsx")); ListFilesTerminal.Add(new ItemFileInfo( @"\\mskv-fs-01\MSKV Files\Управление информационных технологий\07_Аналитический отдел\FAQ\Сверка данных по картам Халва\Примеры\Февраль\Союз\" + @"Клиника ЛМС_февраль.xlsx")); ListFilesTerminal.Add(new ItemFileInfo( @"\\mskv-fs-01\MSKV Files\Управление информационных технологий\07_Аналитический отдел\FAQ\Сверка данных по картам Халва\Примеры\Февраль\Союз\" + @"Клиника ЛМС_февраль_2.xlsx")); ListFilesTerminal.Add(new ItemFileInfo( @"\\mskv-fs-01\MSKV Files\Управление информационных технологий\07_Аналитический отдел\FAQ\Сверка данных по картам Халва\Примеры\Февраль\Союз\" + @"Клиника ЛМС_февраль_3.xlsx")); } }
public void Action(object parameter) { string param = parameter.ToString(); if (param.Equals("SelectHalvaFile")) { if (SelectScvFile(out string selectedFile)) { HalvaCardReportFile = new ItemFileInfo(selectedFile); } } else if (param.Equals("AddFilesTerminal")) { SelectExcelFiles(ListFilesTerminal); } else if (param.Equals("ExecuteRevise")) { ExecuteRevise(); } }
public static string WriteFileInfoToExcel(ItemFileInfo itemFileInfo, Action <double, string> updateProgress, double progressCurrent) { UpdateProgress = updateProgress ?? throw new ArgumentNullException("updateProgress"); ProgressCurrent = progressCurrent; IWorkbook workbook = null; ISheet sheet = null; string resultFile = string.Empty; UpdateProgress(ProgressCurrent, "Создание новой книги Excel из шаблона"); if (!CreateNewIWorkbook(itemFileInfo.FileName, "Template.xlsx", out workbook, out sheet, out resultFile, "Данные")) { return(string.Empty); } int rowNumber = 1; int columnNumber = 0; UpdateProgress(ProgressCurrent, "Запись данных"); foreach (FileContent fileContent in itemFileInfo.FileContents) { if (string.IsNullOrEmpty(fileContent.TransactionProcessingDate)) { continue; } IRow row = null; try { row = sheet.GetRow(rowNumber); } catch (Exception) { } if (row == null) { row = sheet.CreateRow(rowNumber); } object[] values = new object[] { fileContent.TransactionProcessingDate, fileContent.TransactionCommittingDate, fileContent.TransactionCommitingTime, fileContent.CustomerName, fileContent.CustomerINN == string.Empty ? string.Empty : "'" + fileContent.CustomerINN, fileContent.CustomerStoreName, fileContent.CustomerStoreAddress, fileContent.TerminalIdentificator == string.Empty ? string.Empty : "'" + fileContent.TerminalIdentificator, fileContent.CardNumber, fileContent.OperationAmount, fileContent.TotalReward, fileContent.CompanyReward, fileContent.City, fileContent.AuthorizationCode == string.Empty ? string.Empty : "'" + fileContent.AuthorizationCode, fileContent.UniqueOperationNumberRNN == string.Empty ? string.Empty : "'" + fileContent.UniqueOperationNumberRNN, fileContent.CoincidenceType, fileContent.CoincidencePercent == 0 ? string.Empty : fileContent.CoincidencePercent.ToString(), fileContent.CoincidenceSource, fileContent.CoincidenceRowNumber == 0 ? string.Empty : fileContent.CoincidenceRowNumber.ToString(), fileContent.Comment }; foreach (object value in values) { ICell cell = null; try { cell = row.GetCell(columnNumber); } catch (Exception) { } if (cell == null) { cell = row.CreateCell(columnNumber); } string valueToWrite = value == null ? string.Empty : value.ToString(); if (double.TryParse(valueToWrite, out double result)) { cell.SetCellValue(result); } else if (DateTime.TryParse(valueToWrite, out DateTime date)) { cell.SetCellValue(date); } else { cell.SetCellValue(valueToWrite); } columnNumber++; } columnNumber = 0; rowNumber++; } UpdateProgress(ProgressCurrent, "Сохранение книги Excel"); if (!SaveAndCloseIWorkbook(workbook, resultFile)) { return(string.Empty); } UpdateProgress(progressCurrent, "Выполнение пост-обработки"); if (!PerformFinalProcessing(resultFile)) { UpdateProgress(ProgressCurrent, "!!!Во время выполнения возникли ошибки"); } return(resultFile); }
public static string ReadExcelFileContent(ItemFileInfo itemFileInfo) { IWorkbook workbook; using (FileStream file = new FileStream(itemFileInfo.FullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { workbook = new XSSFWorkbook(file); } int startRow = 0; int cellRNN = 0; int cellAuthorizationCode = 0; int cellOperationAmount = 0; int cellCardNumber = 0; int cellCommittingDate = 0; int cellCommittingTime = 0; FileType type = FileType.Unknown; ISheet sheet = workbook.GetSheetAt(0); try { IRow row = sheet.GetRow(0); string firstValue = GetCellValue(row.GetCell(0)).ToLower(); if (firstValue.StartsWith("номер_терминала")) { type = FileType.Soyuz; } else if (firstValue.StartsWith("отчет о возмещении денежных средств предприятию")) { string secondValue = GetCellValue(sheet.GetRow(1).GetCell(0)).ToLower(); if (secondValue.Equals("номер транзакции")) { type = FileType.SberbankOld; } else { type = FileType.SberbankNew; } } else if (firstValue.StartsWith("отчёт по обработанным операциям за период")) { type = FileType.Vtb; } } catch (Exception) { } switch (type) { case FileType.SberbankOld: startRow = 2; cellRNN = 0; cellAuthorizationCode = 21; cellOperationAmount = 10; cellCardNumber = 20; cellCommittingDate = 8; cellCommittingTime = 8; break; case FileType.SberbankNew: startRow = 3; cellRNN = -1; cellAuthorizationCode = 9; cellOperationAmount = 5; cellCardNumber = 8; cellCommittingDate = 2; cellCommittingTime = 2; break; case FileType.Vtb: startRow = 12; cellRNN = 13; cellAuthorizationCode = 6; cellOperationAmount = 9; cellCardNumber = 1; cellCommittingDate = 4; cellCommittingTime = 5; break; case FileType.Soyuz: startRow = 1; cellRNN = 5; cellAuthorizationCode = 6; cellOperationAmount = 7; cellCardNumber = 4; cellCommittingDate = 2; cellCommittingTime = 3; break; default: return(type.ToString()); } for (int rowCount = startRow; rowCount <= sheet.LastRowNum; rowCount++) { try { IRow row = sheet.GetRow(rowCount); if (row == null) //null is when the row only contains empty cells { continue; } string rnn = string.Empty; if (cellRNN != -1) { rnn = GetCellValue(row.GetCell(cellRNN)); if (string.IsNullOrEmpty(rnn) || string.IsNullOrWhiteSpace(rnn) || !long.TryParse(rnn, out _)) { continue; } } string authorizationCode = GetCellValue(row.GetCell(cellAuthorizationCode)); string operationAmount = GetCellValue(row.GetCell(cellOperationAmount)); string cardNumber = GetCellValue(row.GetCell(cellCardNumber)); string committingDate = GetCellValue(row.GetCell(cellCommittingDate)); string committingTime = GetCellValue(row.GetCell(cellCommittingTime)); if (type == FileType.SberbankNew) { committingDate = GetCellValue(row.GetCell(cellCommittingDate), true); } if (type == FileType.SberbankOld || type == FileType.SberbankNew) { string[] splittedDateTime = committingDate.Split(' '); if (splittedDateTime.Length == 2) { committingDate = splittedDateTime[0]; committingTime = splittedDateTime[1]; if (committingTime.Length == 7) { committingTime = "0" + committingTime; } } } //if (type == FileType.Soyuz) { // if (committingDate.Length == 8) // committingDate = // committingDate.Substring(6, 2) + "." + // committingDate.Substring(4, 2) + "." + // committingDate.Substring(0, 4); // if (committingTime.Length == 6) // committingTime = // committingTime.Substring(0, 2) + ":" + // committingTime.Substring(2, 2) + ":" + // committingTime.Substring(4, 2); //} FileContent fileContent = new FileContent { UniqueOperationNumberRNN = rnn, OperationAmount = operationAmount, AuthorizationCode = authorizationCode, CardNumber = cardNumber, TransactionCommittingDate = committingDate, TransactionCommitingTime = committingTime, CoincidenceRowNumber = rowCount + 1 }; itemFileInfo.FileContents.Add(fileContent); } catch (Exception e) { Console.WriteLine(e.Message + Environment.NewLine + e.StackTrace); } } workbook.Close(); return(type.ToString()); }