diff --git a/Elwig/Helpers/Export/Csv.cs b/Elwig/Helpers/Export/Csv.cs index fae38e6..ea59faa 100644 --- a/Elwig/Helpers/Export/Csv.cs +++ b/Elwig/Helpers/Export/Csv.cs @@ -15,7 +15,9 @@ namespace Elwig.Helpers.Export { protected readonly char Separator; protected string? Header; - public Csv(string filename, char separator = ';') : this(filename, separator, Utils.UTF8) { } + public Csv(string filename, char separator = ';') : + this(filename, separator, Utils.UTF8) { + } public Csv(string filename, char separator, Encoding encoding) { _writer = new StreamWriter(filename, false, encoding); @@ -58,4 +60,22 @@ namespace Elwig.Helpers.Export { public abstract string FormatRow(T row); } + + public class CsvSimple : Csv> { + + public CsvSimple(string filename, char separator, Encoding encoding) : + base(filename, separator, encoding) { + } + + public CsvSimple(string filename, char separator = ';') : + base(filename, separator) { + } + + public override string FormatRow(IEnumerable row) { + return string.Join(Separator, row.Select(i => { + var str = $"{i}"; + return str.Contains(Separator) || str.Contains('\n') ? $"\"{str.Replace("\"", "\"\"")}\"" : str; + })); + } + } } diff --git a/Elwig/Helpers/Utils.cs b/Elwig/Helpers/Utils.cs index b0ad65c..d32c50d 100644 --- a/Elwig/Helpers/Utils.cs +++ b/Elwig/Helpers/Utils.cs @@ -36,6 +36,7 @@ namespace Elwig.Helpers { public static partial class Utils { public static readonly Encoding UTF8 = new UTF8Encoding(false, true); + public static readonly Encoding UTF8BOM = new UTF8Encoding(true, true); public static readonly JsonSerializerOptions JsonOpts = new() { Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping }; public static int CurrentYear => DateTime.Now.Year; diff --git a/Elwig/Windows/QueryWindow.xaml b/Elwig/Windows/QueryWindow.xaml index 5320c23..85b0b62 100644 --- a/Elwig/Windows/QueryWindow.xaml +++ b/Elwig/Windows/QueryWindow.xaml @@ -5,27 +5,35 @@ Title="Datenbankabfragen - Elwig" Height="450" Width="800" MinWidth="400" MinHeight="300"> - - + + + + + - - + + -