Exemple #1
0
        /// <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);
            }
        }
Exemple #2
0
        /// <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();
            }
        }