public CoinKeeperCsvData Parse(string filepath) { if (!File.Exists(filepath)) { throw new FileNotFoundException(filepath); } var fileStructure = new CoinKeeperFileStructure(); using (var reader = new StreamReader(filepath)) { while (!reader.EndOfStream) { // пропускаем первую строчку reader.ReadLine(); fileStructure.Operations = ReadSection(reader); fileStructure.Incoming = ReadSection(reader); fileStructure.Accounts = ReadSection(reader); fileStructure.Categories = ReadSection(reader); fileStructure.Tags = ReadSection(reader); } } var data = new CoinKeeperCsvData(); data.Operations = ParseRow(fileStructure.Operations, CoinKeeperParserHelper.OperationSelector); data.Incoming = ParseRow(fileStructure.Incoming, CoinKeeperParserHelper.IncomingAccountSelector); data.Categories = ParseRow(fileStructure.Categories, CoinKeeperParserHelper.CategorySelector); data.Accounts = ParseRow(fileStructure.Accounts, CoinKeeperParserHelper.AccountSelector); data.Tags = ParseRow(fileStructure.Tags, CoinKeeperParserHelper.TagSelector); return(data); }
private static void ExportFromCSV() { Console.WriteLine("Start CSV parser"); var coinKeeperCsvParser = new CoinKeeperCsvParser(); CoinKeeperCsvData data = coinKeeperCsvParser .Parse(@"INSERT_PATH_TO_CSV_FILE_HERE"); // TODO: process data Console.WriteLine("Finish"); }