/// <summary>Creates a new DelimitedClassBuilder.</summary> /// <param name="options">The specifications for the CSV file.</param> public CsvClassBuilder(CsvOptions options) : base(options.RecordClassName, options.Delimiter.ToString()) { IgnoreFirstLines = options.HeaderLines; if (options.SampleFileName != string.Empty) { string firstLine = CommonEngine.RawReadFirstLines(options.SampleFileName, 1); if (options.HeaderLines > 0) { foreach (string header in firstLine.Split(options.HeaderDelimiter == char.MinValue ? options.Delimiter : options.HeaderDelimiter)) { AddField(StringHelper.ToValidIdentifier(header)); } } else { int fieldsNbr = firstLine.Split(options.Delimiter).Length; for(int i = 0; i < fieldsNbr; i++) AddField(options.FieldsPrefix + i.ToString()); } } else if (options.NumberOfFields > 0) { AddFields(options.NumberOfFields, options.FieldsPrefix); } else throw new BadUsageException("You must provide a SampleFileName or a NumberOfFields to parse a genric CSV file."); }
public void ReadFileHeader2() { string file = TestCommon.GetPath("Good", "RealCsvComma1.txt"); string classname = "CustomerComma"; char delimiter = ','; var options = new CsvOptions(classname, delimiter, file); options.HeaderLines = 2; var engine = new CsvEngine(options); Assert.AreEqual(classname, engine.RecordType.Name); DataTable dt = engine.ReadFileAsDT(file); Assert.AreEqual(19, dt.Rows.Count); Assert.AreEqual(19, engine.TotalRecords); Assert.AreEqual(0, engine.ErrorManager.ErrorCount); Assert.AreEqual("CustomerID", dt.Columns[0].ColumnName); }
private void RunTest(string file, char delimiter, char delimiterHdr, string classname) { var options = new CsvOptions(classname, delimiter, file); options.HeaderDelimiter = delimiterHdr; var engine = new CsvEngine(options); Assert.AreEqual(classname, engine.RecordType.Name); DataTable dt = engine.ReadFileAsDT(file); Assert.AreEqual(20, dt.Rows.Count); Assert.AreEqual(20, engine.TotalRecords); Assert.AreEqual(0, engine.ErrorManager.ErrorCount); Assert.AreEqual("CustomerID", dt.Columns[0].ColumnName); }