Я экспортирую значения таблицы данных WPF в CSV со следующим кодом:
private void Button_Click_2(object sender, RoutedEventArgs e)
{
DataGrid1.SelectAllCells();
DataGrid1.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
ApplicationCommands.Copy.Execute(null, DataGrid1);
DataGrid1.UnselectAllCells();
String result = (string)Clipboard.GetData(DataFormats.CommaSeparatedValue);
File.WriteAllText(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\" + "AllCustomersCSV.txt", result, UnicodeEncoding.UTF8);
}
Однако результат имеет много пробелов после значений. Похоже на поведение WPF DataGrid. Я попытался добавить:
String result = (string)Clipboard.GetData(DataFormats.CommaSeparatedValue.Trim());
, но это не похоже на работу. Что я делаю не так?
PS Я полагаю, это должно быть сделано с помощью l oop или List, поскольку он не может обрезать каждый из них отдельно в моей текущей настройке?
РЕДАКТИРОВАТЬ 1:
Вот пример вывода txt файла:
РЕДАКТИРОВАТЬ 2:
result
пример вывода:
\tENERGIDIRETORAT \t \tBOX 5091 MAJORSTUA \tN-0301
Я думаю, мне нужно что-то вроде:
result = Regex.Replace(result, " *\t *", ",");
Однако это не работает для все строки, особенно с пустыми ячейками в некоторых строках.
Таким образом, следует удалить все пробелы (табуляции) до \t
, но оставить \t
для замены на ,
(запятые).
РЕДАКТИРОВАТЬ 3:
У меня не работает экспорт CSV, поскольку, возможно, отсутствуют некоторые запятые, поскольку после импорта в Excel некоторые столбцы не совпадают. Я пошел для попытки формата файла xls. Кажется, это работает нормально (кодировка UTF8 была неверной, кстати):
private void Button_Click(object sender, RoutedEventArgs e)
{
DataGrid2.SelectAllCells();
DataGrid2.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
ApplicationCommands.Copy.Execute(null, DataGrid2);
String resultat = (string)Clipboard.GetData(DataFormats.CommaSeparatedValue);
String result = (string)Clipboard.GetData(DataFormats.Text);
DataGrid2.UnselectAllCells();
StreamWriter file1 = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\" + "SameCustomersCSV.xls",
false, Encoding.GetEncoding("ISO-8859-1"));
file1.WriteLine(result.Replace(',', ' '));
file1.Close();
MessageBox.Show(" Exporting data to Excel file to your Desktop is ready!");
}
Я не совсем понимаю, в чем проблема с CSV ...