Example #1
0
        /// <summary>
        /// Appends the rows to the builder.
        /// </summary>
        /// <param name="sb">The string builder.</param>
        /// <param name="definition">The definition.</param>
        /// <returns>The mutated string builder.</returns>
        private static StringBuilder AppendRows(this StringBuilder sb, CsvDefinition definition)
        {
            foreach (var row in definition.Rows)
            {
                sb.AppendRow(definition, row);
            }

            return(sb);
        }
Example #2
0
        /// <summary>
        /// Appends the headers to the builder.
        /// </summary>
        /// <param name="sb">The string builder.</param>
        /// <param name="definition">The definition.</param>
        /// <returns>The mutated string builder.</returns>
        private static StringBuilder AppendHeaders(this StringBuilder sb, CsvDefinition definition)
        {
            foreach (var header in definition.Headers)
            {
                sb.Append(header)
                .Append(DELIM);
            }

            return(sb.AppendLineEnd());
        }
Example #3
0
        private static StringBuilder AppendRow(this StringBuilder sb, CsvDefinition definition, CsvRow row)
        {
            foreach (var header in definition.Headers)
            {
                var cell = row.SingleOrDefault(c => c.Header == header)?.Value ?? string.Empty;
                sb.Append(Encode(cell)).Append(DELIM);
            }

            return(sb.AppendLineEnd());
        }
Example #4
0
        /// <summary>
        /// Converts the file definition to a string.
        /// </summary>
        /// <returns></returns>
        public static string GenerateString(this CsvDefinition definition)
        {
            if (!definition.ThrowIfNull(nameof(definition)).Validate())
            {
                throw new InvalidOperationException("Unable to generate CSV output as the definition provided is currently invalid.");
            }

            return(new StringBuilder()
                   .AppendHeaders(definition)
                   .AppendRows(definition)
                   .ToString());
        }
Example #5
0
 /// <summary>
 /// Exports the file definition to a byte array.
 /// </summary>
 /// <param name="definition">The definition.</param>
 /// <returns>A byte array representing the file, ideal for downloading.</returns>
 public static byte[] GenerateBytes(this CsvDefinition definition)
 => Encoding.UTF8.GetBytes(GenerateString(definition));
Example #6
0
 /// <summary>
 /// Exports the file definition to a file.
 /// </summary>
 /// <param name="definition">The definition.</param>
 /// <param name="path">The path of the target file.</param>
 public static void GenerateFile(this CsvDefinition definition, string path)
 => System.IO.File.WriteAllText(path.ThrowIfNullOrEmpty(nameof(path)), GenerateString(definition));