public static void ProcessCsv_NotVbWithErrorHandling(string csvInput) { using (var csvReader = new StringReader(csvInput)) using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader)) { // Skip the header line if (!parser.EndOfData) { parser.ReadFields(); } while (!parser.EndOfData) { try { var csvLine = parser.ReadFields(); var name = csvLine[0]; var birthDate = csvLine[1]; Console.WriteLine($"{name} was born on {birthDate}"); } catch (NotVisualBasic.FileIO.CsvMalformedLineException ex) { Console.Error.WriteLine($"Failed to parse line {ex.LineNumber}: {parser.ErrorLine}"); } } } }
public static IEnumerable <IDictionary <string, string> > ParseCsvWithHeader(string csvInput) { using (var csvReader = new StringReader(csvInput)) using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader)) { if (parser.EndOfData) { yield break; } string[] headerFields = parser.ReadFields(); while (!parser.EndOfData) { string[] fields = parser.ReadFields(); int fieldCount = Math.Min(headerFields.Length, fields.Length); IDictionary <string, string> fieldDictionary = new Dictionary <string, string>(fieldCount); for (var i = 0; i < fieldCount; i++) { string headerField = headerFields[i]; string field = fields[i]; fieldDictionary[headerField] = field; } yield return(fieldDictionary); } } }
public static object[,] GetArrayFromCsvFile(string file) { List <string[]> rawData = new List <string[]>(); using (var csvReader = new FileStream(Path.Combine(Directory.GetCurrentDirectory(), file), FileMode.Open)) using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader)) { while (!parser.EndOfData) { rawData.Add(parser.ReadFields()); } } var data = new object[rawData.Count, rawData[0].Length]; for (int i = 0; i < rawData.Count; i++) { for (int j = 0; j < rawData[0].Length; j++) { data[i, j] = rawData[i].GetValue(j); } } return(data); }
public void ReadLine_SampleWithNewlineInQuotedField() { const string input = @"Name,Birth Date ""Creed, Apollo"",1942-08-17 ""Ivan Drago"",1961-11-03 ""Robert """"Rocky"""" Balboa"",1945-07-06"; var parserReader = new StringReader(input); var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(parserReader); var vbParser = new Microsoft.VisualBasic.FileIO.TextFieldParser(new StringReader(input)); vbParser.SetDelimiters(","); Assert.Equal(vbParser.ReadFields(), parser.ReadFields()); Assert.Equal(vbParser.ReadFields(), parser.ReadFields()); Assert.Equal(vbParser.ReadLine(), parserReader.ReadLine()); // The readline should have read into the middle of the field, which changes the parsing output Assert.Equal(new[] { @"Drago""", "1961-11-03" }, vbParser.ReadFields()); Assert.Equal(new[] { @"Drago""", "1961-11-03" }, parser.ReadFields()); Assert.Equal(vbParser.ReadFields(), parser.ReadFields()); Assert.Null(vbParser.ReadFields()); Assert.Null(parser.ReadFields()); Assert.True(vbParser.EndOfData); Assert.True(parser.EndOfData); }
private List <Tuple <string, int, int?> > ProcessCsv(string filepath, char delimiter = ',', char quoteCharacter = '\"', char quoteEscapeCharacter = '\"') { List <Tuple <string, int, int?> > result = new List <Tuple <string, int, int?> >(); using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(filepath)) { parser.SetDelimiter(delimiter); parser.SetQuoteCharacter(quoteCharacter); parser.SetQuoteEscapeCharacter(quoteEscapeCharacter); while (!parser.EndOfData) { var line = parser.ReadFields(); int startingPage = 0; if (Int32.TryParse(line[1], out startingPage)) { int endingPage = 0; bool endingPageGiven = (line.Length > 2) && Int32.TryParse(line[2], out endingPage); result.Add(new Tuple <string, int, int?>(line[0], startingPage, endingPageGiven ? (int?)endingPage : null)); } else { Properties.Settings.Default.Log += $"The Song \"{line[0]}\" has no page number ({line[1]}, {line[2]})." + System.Environment.NewLine; } } } Properties.Settings.Default.Save(); return(result); }
public static void ProcessReadLineFromReader(string csvInput) { using (var csvReader = new StringReader(csvInput)) using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader)) { var fields = parser.ReadFields(); var line = csvReader.ReadLine(); } }
public void NotVBTextFieldParser() { var tr = TestData.GetTextReader(); var csv = new NotVisualBasic.FileIO.CsvTextFieldParser(tr); while (!csv.EndOfData) { var fields = csv.ReadFields(); } }
public static void CreateWithConfigurationOptions(TextReader csvReader) { var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader); parser.SetDelimiter('|'); parser.Delimiters = new[] { "|" }; parser.SetQuoteCharacter('\''); parser.SetQuoteEscapeCharacter('\\'); parser.HasFieldsEnclosedInQuotes = false; parser.TrimWhiteSpace = true; }
public static string ReadLine(this NotVisualBasic.FileIO.CsvTextFieldParser parser) { var fields = parser.ReadFields(); if (fields == null) { return(null); } return(string.Join(",", fields.Select(SerializeValue))); }
public static IEnumerable <string> ProcessReadLineExtensionMethod(string csvInput) { using (var csvReader = new StringReader(csvInput)) using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader)) { string line; while ((line = parser.ReadLine()) != null) { yield return(line); } } }
public static List <string> ProcessCsv(string csvInput) { using (var csvReader = new StringReader(csvInput)) using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader)) { parser.HasFieldsEnclosedInQuotes = true; return(parser.ReadFields().ToList()); } }
public Waypoint(string wptText) { if (wptText.Length > 0) { using (var strm = wptText.ToStream()) using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(strm)) { parser.SetDelimiter(' '); var csvLine = parser.ReadFields(); X = double.Parse((csvLine[1].Trim('(', ')'))); Y = double.Parse((csvLine[2].Trim('(', ')'))); Name = csvLine[3]; TimeStamp = DateTime.Parse(csvLine[4]); } } }
public static IEnumerable <IDictionary <string, string> > ParseCsvWithHeaderIgnoreErrors(string csvInput) { using (var csvReader = new StringReader(csvInput)) using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader)) { if (parser.EndOfData) { yield break; } string[] headerFields; try { headerFields = parser.ReadFields(); } catch (NotVisualBasic.FileIO.CsvMalformedLineException ex) { Console.Error.WriteLine($"Failed to parse header line {ex.LineNumber}: {parser.ErrorLine}"); yield break; } while (!parser.EndOfData) { string[] fields; try { fields = parser.ReadFields(); } catch (NotVisualBasic.FileIO.CsvMalformedLineException ex) { Console.Error.WriteLine($"Failed to parse line {ex.LineNumber}: {parser.ErrorLine}"); continue; } int fieldCount = Math.Min(headerFields.Length, fields.Length); IDictionary <string, string> fieldDictionary = new Dictionary <string, string>(fieldCount); for (var i = 0; i < fieldCount; i++) { string headerField = headerFields[i]; string field = fields[i]; fieldDictionary[headerField] = field; } yield return(fieldDictionary); } } }
public List <T> GetRecords <T>(MemoryStream stream) where T : ICsvReadable, new() { var activate = ActivatorFactory.Create <T>(_activationMethod); var allRecords = new List <T>(); using (var reader = new StreamReader(stream)) { var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(reader); while (!parser.EndOfData) { var fields = parser.ReadFields(); var record = activate(); record.Read(i => fields[i]); allRecords.Add(record); } } return(allRecords); }
public void ReadLine_Sample() { const string input = @"Name,Birth Date Apollo Creed,1942-08-17 Ivan Drago,1961-11-03"; var parserReader = new StringReader(input); var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(parserReader); var vbParser = new Microsoft.VisualBasic.FileIO.TextFieldParser(new StringReader(input)); vbParser.SetDelimiters(","); Assert.Equal(vbParser.ReadLine(), parserReader.ReadLine()); Assert.Equal(vbParser.ReadLine(), parserReader.ReadLine()); Assert.Equal(vbParser.ReadLine(), parserReader.ReadLine()); Assert.Null(vbParser.ReadFields()); Assert.Null(parser.ReadFields()); Assert.True(vbParser.EndOfData); Assert.True(parser.EndOfData); }
public static void ProcessCsv_NotVb(string csvInput) { using (var csvReader = new StringReader(csvInput)) using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader)) { // Skip the header line if (!parser.EndOfData) { parser.ReadFields(); } while (!parser.EndOfData) { var csvLine = parser.ReadFields(); var name = csvLine[0]; var birthDate = csvLine[1]; Console.WriteLine($"{name} was born on {birthDate}"); } } }
public override async Task <string> Run(string arg, CommercePipelineExecutionContext context) { var importPolicy = context.GetPolicy <ImportSellableItemsPolicy>(); var sellableItemComparerByProductId = new ImportSellableItemComparer(SellableItemComparerConfiguration.ByProductId); var sellableItemComparerByImportData = new ImportSellableItemComparer(SellableItemComparerConfiguration.ByImportData); LogInitialization(context, importPolicy); try { var filePath = CommerceCommander.Command <GetFileCommand>().Process(context.CommerceContext, importPolicy.FileFolderPath, importPolicy.FilePrefix, importPolicy.FileExtention); if (string.IsNullOrEmpty(filePath)) { context.Logger.LogInformation($"{Name} - Skipping execution as there are no files to process."); return(null); } using (var reader = new StreamReader(filePath)) { using (var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(reader)) { parser.SetDelimiter(importPolicy.FileGroupSeparator); // skip header if (!parser.EndOfData) { parser.ReadFields(); } while (!parser.EndOfData) { var importRawLines = new List <string[]>(); for (int i = 0; !parser.EndOfData && i <= importPolicy.ItemsPerBatch - 1; i++) { importRawLines.Add(parser.ReadFields()); } var importItems = await CommerceCommander.Command <TransformImportToSellableItemsCommand>().Process(context.CommerceContext, importRawLines); var existingItems = await CommerceCommander.Command <GetSellableItemsBulkCommand>().Process(context.CommerceContext, importItems); var newItems = importItems.Except(existingItems, sellableItemComparerByProductId).ToList(); var changedItems = existingItems.Except(importItems, sellableItemComparerByImportData).ToList(); await CommerceCommander.Command <CopyImportToSellableItemsCommand>().Process(context.CommerceContext, importItems, changedItems); var associationsToCreate = importItems.SelectMany(i => i.GetPolicy <TransientImportSellableItemDataPolicy>().ParentAssociationsToCreateList).ToList(); var associationsToRemove = importItems.SelectMany(i => i.GetPolicy <TransientImportSellableItemDataPolicy>().ParentAssociationsToRemoveList).ToList(); RemoveTransientData(importItems); await CommerceCommander.Command <PersistEntityBulkCommand>().Process(context.CommerceContext, newItems.Union(changedItems)); await CommerceCommander.Command <AssociateToParentBulkCommand>().Process(context.CommerceContext, associationsToCreate); // TODO: Need to test the disassociate, haven't had time yet await CommerceCommander.Command <DisassociateToParentBulkCommand>().Process(context.CommerceContext, associationsToRemove); await Task.Delay(importPolicy.SleepBetweenBatches); } } } CommerceCommander.Command <MoveFileCommand>().Process(context.CommerceContext, importPolicy.FileArchiveFolderPath, filePath); } catch (Exception ex) { context.Abort(await context.CommerceContext.AddMessage( context.GetPolicy <KnownResultCodes>().Error, Name, new object[1] { ex }, $"{Name} Import Exception: {ex.Message}"), context); } return(null); }
public static void CreateWithCompatibilityMode(TextReader csvReader) { var parser = new NotVisualBasic.FileIO.CsvTextFieldParser(csvReader); parser.CompatibilityMode = true; }