Пример #1
0
        private void WriteToFile(TextWriter writer, IEnumerable <string[]> records, string[] headers, char delimiter, string EOLDelimiter,
                                 char quoteChar, QuoteAllFields quoteAllFields = QuoteAllFields.None)
        {
            this.Validate(delimiter, EOLDelimiter, quoteChar);

            if (EOLDelimiter.IsNullOrEmpty())
            {
                EOLDelimiter = Environment.NewLine;
            }

            string doubleQuotesText = $"{quoteChar}{quoteChar}";
            string quotesText       = $"{quoteChar}";
            int    index            = 0;
            int    lineNo           = 0;

            foreach (var rec in records)
            {
                if (index == 0)
                {
                    if (!headers.IsNullOrEmpty())
                    {
                        WriteRec(writer, delimiter, EOLDelimiter, quoteChar, doubleQuotesText, quotesText, headers, lineNo,
                                 (quoteAllFields & QuoteAllFields.HeaderOnly) == QuoteAllFields.HeaderOnly);
                        lineNo++;
                    }
                }

                WriteRec(writer, delimiter, EOLDelimiter, quoteChar, doubleQuotesText, quotesText, rec, lineNo,
                         (quoteAllFields & QuoteAllFields.DataOnly) == QuoteAllFields.DataOnly);
                lineNo++;
                index++;
            }
            writer.Flush();
        }
Пример #2
0
 public void Write <T>(StringBuilder sb, IEnumerable <T> records, string[] headers = null,
                       char delimiter = ',', string EOLDelimiter = null, char quoteChar = '\"',
                       Action <int, T, IList <string> > mapper = null, QuoteAllFields quoteAllFields = QuoteAllFields.None) where T : new()
 {
     if (sb == null)
     {
         throw new ArgumentException("Invalid StringBuilder passed.");
     }
     Write(new StringWriter(sb), records, headers, delimiter, EOLDelimiter, quoteChar, mapper, quoteAllFields);
 }
Пример #3
0
        public void Write <T>(TextWriter writer, IEnumerable <T> records, string[] headers = null,
                              char delimiter = ',', string EOLDelimiter = null, char quoteChar = '\"',
                              Action <int, T, IList <string> > mapper = null, QuoteAllFields quoteAllFields = QuoteAllFields.None) where T : new()
        {
            if (writer == null)
            {
                throw new ArgumentException("Invalid stream writer passed.");
            }
            this.Validate <T>();
            var @this = this;

            var recEnum = records.GetEnumerator();

            if (headers.IsNullOrEmpty())
            {
                T firstRec = default(T);
                if (GetFirstNotNullRecord(recEnum, ref firstRec))
                {
                    headers = this.GetHeaders(firstRec);
                }

                WriteToFile(writer, GetRecords(firstRec, recEnum).Select((rec, index) =>
                {
                    IList <string> cols = new List <string>();
                    if (mapper == null)
                    {
                        @this.GetValues(rec, cols);
                    }
                    else
                    {
                        mapper(index, rec, cols);
                    }

                    return(cols.ToArray());
                }), headers, delimiter, EOLDelimiter, quoteChar, quoteAllFields);
            }
            else
            {
                WriteToFile(writer, records.Select((rec, index) =>
                {
                    IList <string> cols = new List <string>();
                    if (mapper == null)
                    {
                        @this.GetValues(rec, cols);
                    }
                    else
                    {
                        mapper(index, rec, cols);
                    }

                    return(cols.ToArray());
                }), headers, delimiter, EOLDelimiter, quoteChar, quoteAllFields);
            }
        }
Пример #4
0
        public void WriteFile <T>(string filename, IEnumerable <T> records, string[] headers = null,
                                  char delimiter = ',', string EOLDelimiter = null, char quoteChar = '\"',
                                  Action <int, T, IList <string> > mapper = null, QuoteAllFields quoteAllFields = QuoteAllFields.None) where T : new()
        {
            if (filename.IsNullOrWhiteSpace())
            {
                throw new ArgumentException("Invalid filename passed.");
            }

            using (FileStream f = new FileStream(filename, FileMode.Create, FileAccess.Write))
            {
                using (StreamWriter s = new StreamWriter(f))
                {
                    Write <T>(s, records, headers, delimiter, EOLDelimiter, quoteChar, mapper, quoteAllFields);
                }
            }
        }
Пример #5
0
 public void Write <T>(StreamWriter writer, IEnumerable <T> records, string[] headers = null,
                       char delimiter = ',', string EOLDelimiter = null, char quoteChar = '\"',
                       Action <int, T, IList <string> > mapper = null, QuoteAllFields quoteAllFields = QuoteAllFields.None) where T : new()
 {
     Write(writer as TextWriter, records, headers, delimiter, EOLDelimiter, quoteChar, mapper, quoteAllFields);
 }
Пример #6
0
        public void Write(TextWriter writer, IEnumerable <string[]> records, string[] headers = null,
                          char delimiter = ',', string EOLDelimiter = null, char quoteChar = '\"', QuoteAllFields quoteAllFields = QuoteAllFields.None)
        {
            if (writer == null)
            {
                throw new ArgumentException("Invalid stream writer passed.");
            }
            this.Validate(delimiter, EOLDelimiter, quoteChar);

            WriteToFile(writer, records, headers, delimiter, EOLDelimiter, quoteChar, quoteAllFields);
        }
Пример #7
0
 public void Write(StreamWriter writer, IEnumerable <string[]> records, string[] headers = null,
                   char delimiter = ',', string EOLDelimiter = null, char quoteChar = '\"', QuoteAllFields quoteAllFields = QuoteAllFields.None)
 {
     Write(writer as TextWriter, records, headers, delimiter, EOLDelimiter, quoteChar, quoteAllFields);
 }