private void btn_savings1_Click(object sender, EventArgs e) { HistoryTransaction transaction = new HistoryTransaction(); //List<string> emortelleLines = new List<string>(); OpenFileDialog openFile = new OpenFileDialog(); openFile.Filter = "Text Files (.txt)|*.txt"; openFile.Title = "Select the Emortelle Transaction Reports"; if (openFile.ShowDialog() == DialogResult.OK) { pb_import.Visible = true; pb_import.Minimum = 1; pb_import.Maximum = 502330; pb_import.Value = 1; pb_import.Step = 1; try { using (StreamReader streamReader = new StreamReader(openFile.FileName)) { string line = ""; if (!File.Exists(Path.GetDirectoryName(openFile.FileName) + "\\savings1.txt")) { // Create a file to write to. StreamWriter sw = File.CreateText(Path.GetDirectoryName(openFile.FileName) + "\\savings1.txt"); sw.Close(); } while ((line = streamReader.ReadLine()) != null) { transaction = parseLine(line, fixedWidthKeyPair); if (transaction.tran_date != null) { using (StreamWriter sw = File.AppendText(Path.GetDirectoryName(openFile.FileName) + "\\savings1.txt")) { sw.WriteLine(transaction.account_number + "|" + transaction.name + "|" + transaction.tran_date + "|" + transaction.tran_code + "|" + transaction.account_id + "|" + transaction.description + "|" + transaction.tran_amount + "|" + transaction.balance); sw.Close(); } } pb_import.PerformStep(); } streamReader.Close(); } } catch (Exception ex) { MessageBox.Show("Error: Could not read the file. Original error: " + ex.Message); } } }
private HistoryTransaction parseLine(string currentLine, List <KeyValuePair <int, int> > keypair) { HistoryTransaction transaction = new HistoryTransaction(); if (Regex.IsMatch(currentLine, @"^Name :")) { Regex patternName = new Regex(@"^Name : (.+)\s{2}"); Match match = patternName.Match(currentLine); if (match.Success) { memberName = match.Groups[1].Value.Trim(); } } if (Regex.IsMatch(currentLine, @"Account :")) { Regex patternAccount = new Regex(@"Account : (\d{8})"); Match match = patternAccount.Match(currentLine); if (match.Success) { accountNumber = match.Groups[1].Value; } } if (Regex.IsMatch(currentLine, @"^======")) { fixedWidthKeyPair = GetFixedWidth(currentLine); } if (Regex.IsMatch(currentLine, @"^Start")) { var partsBal = keypair.Select(pair => currentLine.Substring(pair.Key, pair.Value)).ToList(); for (int i = 4; i < partsBal.Count; i++) { startingBalances.Add(Double.Parse(partsBal[i])); } } if (Regex.IsMatch(currentLine, @"^\d{6}")) { var parts = keypair.Select(pair => currentLine.Substring(pair.Key, pair.Value)).ToList(); transaction.account_number = accountNumber; transaction.name = memberName; transaction.tran_date = parts[0]; transaction.tran_code = parts[1]; transaction.description = parts[2]; //transaction.tran_amount = Double.Parse(parts[3]); for (int i = 4; i < parts.Count; i++) { if (parts[i].Trim() != "") { switch (i) { case 4: transaction.account_id = "S00"; if (startingBalances[0] > Double.Parse(parts[i])) { transaction.tran_amount = Double.Parse(parts[3]) * -1; } else { transaction.tran_amount = Double.Parse(parts[3]); } startingBalances[0] = Double.Parse(parts[i]); break; case 5: transaction.account_id = "S01"; if (startingBalances[1] > Double.Parse(parts[i])) { transaction.tran_amount = Double.Parse(parts[3]) * -1; } else { transaction.tran_amount = Double.Parse(parts[3]); } startingBalances[1] = Double.Parse(parts[i]); break; case 6: transaction.account_id = "D00"; if (startingBalances[2] > Double.Parse(parts[i])) { transaction.tran_amount = Double.Parse(parts[3]) * -1; } else { transaction.tran_amount = Double.Parse(parts[3]); } startingBalances[2] = Double.Parse(parts[i]); break; case 7: transaction.account_id = "D01"; if (startingBalances[3] > Double.Parse(parts[i])) { transaction.tran_amount = Double.Parse(parts[3]) * -1; } else { transaction.tran_amount = Double.Parse(parts[3]); } startingBalances[3] = Double.Parse(parts[i]); break; case 8: transaction.account_id = "D02"; if (startingBalances[4] > Double.Parse(parts[i])) { transaction.tran_amount = Double.Parse(parts[3]) * -1; } else { transaction.tran_amount = Double.Parse(parts[3]); } startingBalances[4] = Double.Parse(parts[i]); break; case 9: transaction.account_id = "D03"; if (startingBalances[5] > Double.Parse(parts[i])) { transaction.tran_amount = Double.Parse(parts[3]) * -1; } else { transaction.tran_amount = Double.Parse(parts[3]); } startingBalances[5] = Double.Parse(parts[i]); break; case 10: transaction.account_id = "D04"; if (startingBalances[6] > Double.Parse(parts[i])) { transaction.tran_amount = Double.Parse(parts[3]) * -1; } else { transaction.tran_amount = Double.Parse(parts[3]); } startingBalances[6] = Double.Parse(parts[i]); break; case 11: transaction.account_id = "D05"; if (startingBalances[7] > Double.Parse(parts[i])) { transaction.tran_amount = Double.Parse(parts[3]) * -1; } else { transaction.tran_amount = Double.Parse(parts[3]); } startingBalances[7] = Double.Parse(parts[i]); break; case 12: transaction.account_id = "D06"; if (startingBalances[8] > Double.Parse(parts[i])) { transaction.tran_amount = Double.Parse(parts[3]) * -1; } else { transaction.tran_amount = Double.Parse(parts[3]); } startingBalances[8] = Double.Parse(parts[i]); break; case 13: transaction.account_id = "D07"; if (startingBalances[9] > Double.Parse(parts[i])) { transaction.tran_amount = Double.Parse(parts[3]) * -1; } else { transaction.tran_amount = Double.Parse(parts[3]); } startingBalances[9] = Double.Parse(parts[i]); break; case 14: transaction.account_id = "D08"; if (startingBalances[10] > Double.Parse(parts[i])) { transaction.tran_amount = Double.Parse(parts[3]) * -1; } else { transaction.tran_amount = Double.Parse(parts[3]); } startingBalances[10] = Double.Parse(parts[i]); break; } transaction.balance = Double.Parse(parts[i]); } } } return(transaction); }