示例#1
0
        public void TestWrite()
        {
            string expectedResult = @"""1"",""2"",""3"",NULL
""a1"",""b1"",""NULL"",""c1""
"""","""","""",""""
""x1"",NULL,""y1"",""z1""
"""","""","""",""""
""fghi"",""jklm"",""nopq"",""rstu""
"""","""","""",""""";

            var csv = new List <string[]>()
            {
                new string[] { "1", "2", "3", null },
                new string[] { "a1", "b1", "NULL", "c1" },
                new string[] { "", "", "", "" },
                new string[] { "x1", null, "y1", "z1" },
                new string[] { "", "", "", "" },
                new string[] { "fghi", "jklm", "nopq", "rstu" },
                new string[] { "", "", "", "" }
            };

            var settings = new CsvWriterSettings()
            {
                ColumnSeparator   = ',',
                Encoding          = new UTF8Encoding(false),
                NullValue         = "NULL",
                TextQualification = CsvTextQualification.Always,
                TextQualifier     = '"'
            };

            var stream = new MemoryStream();


            using (var writer = new CsvWriter(stream, settings))
            {
                foreach (var line in csv)
                {
                    writer.WriteRow(line);
                }
            }

            string result = settings.Encoding.GetString(stream.ToArray());

            Console.WriteLine("Expects:");
            Console.WriteLine(expectedResult);
            Console.WriteLine();
            Console.WriteLine("Result:");
            Console.WriteLine(result);

            Assert.AreEqual(result.Trim(), expectedResult);
        }
示例#2
0
 private CsvWriter(TextWriter writer, CsvWriterSettings settings, bool disposed)
 {
     if (writer == null)
      {
     throw new ArgumentNullException("writer");
      }
      this.writer = writer;
      settings = settings ?? new CsvWriterSettings();
      this.delimiter = settings.RecordDelimiter.AsNewline();
      this.separator = settings.FieldDelimiter;
      this.quotation = settings.QuotationCharacter;
      this.quotationString = settings.QuotationCharacter.ToString();
      this.quoteField = settings.QuoteField;
      this.escapedQuotation = this.quotationString + this.quotationString;
      this.disposed = disposed;
 }
示例#3
0
        public void TestWrite()
        {
            var expectedResult = new StreamReader(
                Assembly.GetExecutingAssembly().GetManifestResourceStream("Uncomplicated.Csv.UnitTest.test-write-with-qualifiers.csv")
                , true).ReadToEnd();


            var src = new StreamReader(
                Assembly.GetExecutingAssembly().GetManifestResourceStream("Uncomplicated.Csv.UnitTest.test-write-with-qualifiers.json")
                , true).ReadToEnd();
            var jsonSrc = JToken.Parse(src);

            var settings = new CsvWriterSettings()
            {
                ColumnSeparator         = ',',
                Encoding                = new UTF8Encoding(false),
                NullValue               = "NULL",
                NewLineMode             = CsvNewLineMode.Windows,
                TextQualification       = CsvTextQualification.AsNeeded,
                TextQualifier           = '"',
                ShouldUseTextQualifiers = (defaultAction, cell) => defaultAction || cell.Contains("a")
            };

            var stream = new MemoryStream();


            using (var writer = new CsvWriter(stream, settings))
            {
                foreach (var line in jsonSrc)
                {
                    var arr = line.Select(s => s.Type == JTokenType.Null ? null : s.ToString()).ToList();
                    writer.WriteRow(arr);
                }
            }

            string result = settings.Encoding.GetString(stream.ToArray());

            Console.WriteLine("Expects:");
            Console.WriteLine(expectedResult);
            Console.WriteLine();
            Console.WriteLine("Result:");
            Console.WriteLine(result);

            Assert.AreEqual(result, expectedResult);
        }
示例#4
0
        static void Write(string path)
        {
            CsvWriterSettings settings = new CsvWriterSettings();

            settings.ColumnSeparator   = ';';
            settings.Encoding          = Encoding.UTF8;
            settings.NewLineMode       = CsvNewLineMode.Windows;
            settings.TextQualification = CsvTextQualification.AsNeeded;
            settings.TextQualifier     = '"';

            using (Stream stream = File.Create(path))
                using (CsvWriter writer = new CsvWriter(stream, settings))
                {
                    writer.WriteRow("header1", "header2", "header3");
                    writer.WriteRow("row1column1", "row1column2", "row1column3");
                    writer.WriteRow("row2column1", "row2column2", "row2column3");
                }
        }
示例#5
0
 /// <summary>
 /// Initializes a new <see cref="CsvWriter"/> with the specified path to output.
 /// </summary>
 /// <param name="writer">The writer.</param>
 /// <param name="settings">The settings.</param>
 public CsvWriter(TextWriter writer, CsvWriterSettings settings = null)
     : this(writer, settings, true)
 {
 }
示例#6
0
 /// <summary>
 /// Initializes a new <see cref="CsvWriter"/> with the specified file stream.
 /// </summary>
 /// <param name="stream">The file stream.</param>
 /// <param name="encoding">The encoding.</param>
 /// <param name="settings">The settings.</param>
 public CsvWriter(Stream stream, Encoding encoding, CsvWriterSettings settings = null)
     : this(new StreamWriter(stream, encoding), settings, false)
 {
 }
示例#7
0
 /// <summary>
 /// Initializes a new <see cref="CsvWriter"/> with the specified file stream.
 /// </summary>
 /// <param name="stream">The file stream.</param>
 /// <param name="settings">The settings.</param>
 public CsvWriter(Stream stream, CsvWriterSettings settings = null)
     : this(new StreamWriter(stream), settings, false)
 {
 }
示例#8
0
 /// <summary>
 /// Initializes a new <see cref="CsvWriter"/> with the specified path to output.
 /// </summary>
 /// <param name="path">The path to file to write in.</param>
 /// <param name="encoding">The encoding.</param>
 /// <param name="settings">The settings.</param>
 public CsvWriter(string path, Encoding encoding, CsvWriterSettings settings = null)
     : this(new StreamWriter(path, false, encoding, 0x400), settings, false)
 {
 }
示例#9
0
 /// <summary>
 /// Initializes a new <see cref="CsvWriter"/> with the specified path to output.
 /// </summary>
 /// <param name="path">The path to file to write in.</param>
 /// <param name="settings">The settings.</param>
 public CsvWriter(string path, CsvWriterSettings settings = null)
     : this(new StreamWriter(path), settings, false)
 {
 }