/// <summary> /// Uses CultureHelper.SystemCultureInfo /// </summary> /// <param name="data"></param> public static void SetClipboardData(List <string[]> data) { if (data is null || data.Count == 0) { return; } var sb1 = new StringBuilder(); var sb2 = new StringBuilder(); foreach (var row in data) { sb1.Append(CsvHelper.FormatForCsv(CultureHelper.SystemCultureInfo.TextInfo.ListSeparator, row)); sb1.Append(Environment.NewLine); sb2.Append(CsvHelper.FormatForCsv("\t", row)); sb2.Append(Environment.NewLine); } string clipboardData1 = sb1.ToString(); string clipboardData2 = sb2.ToString(); Clipboard.Clear(); if (!String.IsNullOrEmpty(clipboardData1)) { Clipboard.SetData(DataFormats.CommaSeparatedValue, clipboardData1); } if (!String.IsNullOrEmpty(clipboardData2)) { Clipboard.SetData(DataFormats.Text, clipboardData2); } }
/// <summary> /// Saves changed data to .csv file on disk. /// </summary> public void SaveData(string?fileName) { if (_csvDbDirectoryInfo is null) { return; } if (string.IsNullOrWhiteSpace(fileName)) { return; } string fileNameUpper = fileName !.ToUpperInvariant(); if (!_csvFilesCollection.TryGetValue(fileNameUpper, out CsvFile? csvFile)) { return; } if (csvFile.DataIsChangedByProgram) { _fileSystemWatcher.EnableRaisingEvents = false; try { var isNewCsvFile = csvFile.LastWriteTimeUtc == DateTime.MinValue; // If the file to be deleted does not exist, no exception is thrown. File.Delete(csvFile.FileFullName); // For 'a' to 'A' changes in files names to work. using (var writer = new StreamWriter(csvFile.FileFullName, false, new UTF8Encoding(true))) { foreach (var fileLine in csvFile.Data !.OrderBy(kvp => kvp.Key)) { writer.WriteLine(CsvHelper.FormatForCsv(",", fileLine.Value.ToArray())); } } csvFile.LastWriteTimeUtc = File.GetLastWriteTimeUtc(csvFile.FileFullName); if (isNewCsvFile) { CsvFileChanged?.Invoke(CsvFileChangeAction.Added, fileNameUpper); } else { CsvFileChanged?.Invoke(CsvFileChangeAction.Updated, fileNameUpper); } } catch (Exception ex) { _logger?.LogError(ex, Properties.Resources.CsvDb_CsvFileWritingError + " " + csvFile.FileFullName); } csvFile.DataIsChangedByProgram = false; var t = FileSystemWatcherEnableRaisingEventsAsync(); } }