예제 #1
0
        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);
        }
예제 #2
0
        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");
        }