Невозможно преобразовать data-grid в wpf в csv без пропуска арабских значений - PullRequest
0 голосов
/ 22 сентября 2019

Я работаю над проектом, который получает данные из JSON API и отображает их в сетке данных, в которой пользователь может изменить значения при необходимости, а затем экспортировать как CSV, данные содержат арабский текст, который после экспорта CSV становитсязнаки вопроса вместо фактического арабского текста !!!

вот код для справки:

        private void ExportToCSV(DataGrid dg)
        {
            dg.SelectAllCells();

            dg.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
            ApplicationCommands.Copy.Execute(null, dg);

            dg.UnselectAllCells();
            String result = (string)Clipboard.GetData(DataFormats.CommaSeparatedValue);

            //Save Location for the csv (not the actual Location)
            string SaveLocation = @"C:\Users\username\...\values"  + ".csv";

            //Overwriting previous values after exporting
            File.Delete(SaveLocation);
            File.AppendAllText(SaveLocation, result,Encoding.UTF8);

        }

Я пробовал использовать разные кодировки, такие как ASCII и Unicode, но не показываетТребуемый результат: Арабский текст внутри CSV без вопросительных знаков Спасибо

Ответы [ 2 ]

0 голосов
/ 22 сентября 2019

Мне удалось найти решение этой проблемы

, сначала преобразовав текст в Unicode, а затем заменив '\ t' на ',' затем сохраните его как CSV, вот код:

        private void ExportToCSV(DataGrid dg)
        {
            dg.SelectAllCells();

            dg.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
            ApplicationCommands.Copy.Execute(null, dg);

            dg.UnselectAllCells();
            String result =(string)Clipboard.GetData(DataFormats.UnicodeText);
            string resultCSV = result.Replace('\t',',');
            //Save Location for the csv (not the actual Location)
            string SaveLocation = @"C:\Users\username\...\values"  + ".csv";

            //Overwriting previous values after exporting
            File.Delete(SaveLocation);
            File.AppendAllText(SaveLocation, result,Encoding.UTF8);

        }
0 голосов
/ 22 сентября 2019

Отметьте это , как получить Unicode из буфера обмена.

...