Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
7 / 7 / 0
Регистрация: 19.05.2010
Сообщений: 49

dataGridView: копирование русских шрифтов в буфер обмена

09.09.2010, 16:03. Показов 5358. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Проблема заключается в следующем. В dataGridView выплевываются данные из БД. При попытке копирования содержимого ячейки с русским шрифтом (Ctrl+C) в Microsoft Exel , в Exel вместо ожидаемого текста появляется "абракадабра". Если кто сталкивался, подскажите как победить данную проблему.

Добавлено через 19 минут
P.S.: Прошу прощения за некорректно сформулированный заголовок этой темы
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.09.2010, 16:03
Ответы с готовыми решениями:

Копирование выбранных столбцов из DataGridView в буфер обмена
Добрый день. Имеется datagriview1. В нем есть 5 колонок. Возникла необходимость скопировать в буфер обмена 2й и 5й столбец со всеми...

Копирование русских букв в Буфер обмена из текстового поля
Clipboard.SetText Text1.Text Если в текстовом поле есть русские буквы, то они правильно переносятся в буфер, только если в данный момент...

Копирование-вставка (буфер обмена)
Народ не ругайтесь слишком сильно, есть код на VBA TextBox1.SelStart = 0 TextBox1.SelLength = TextBox1.TextLength ...

9
 Аватар для Terion
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
09.09.2010, 16:16
я сталкивалась, но забила)т.к. стало неактуально, т.к. данные стало необходимо выгружать в эксель программно.
причем из гридвью при копировании получается косяк кодировок, и при копировании из датагриид все нормально.

что за бд, кстати говоря?какие у нее дефолтовые настройки кодировок?не пробовали при помещении в гридвью делать некое перекодирование?может, в деволтовую кодировку винды
0
7 / 7 / 0
Регистрация: 19.05.2010
Сообщений: 49
09.09.2010, 16:32  [ТС]
БД: Oracle 10G
Дефолтовые настройки кодировок: NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
Перекодировки делать не пробовал , вот и спрашиваю может кто подскажет у кого есть с этим опыт
P.S. в MS Visual Studio 2008 компонент dataGridView версии 2.0.0.0 , сейчас коллега попробовал сделать подобное в 2010 студи там уже dataGridView версии 4.0 , копипаст русских слов в Exel прошел без ошибок кодировки
1
 Аватар для Terion
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
09.09.2010, 16:39
я тоже в 2008 работаю.надо тож провести эксперимент на 2010, спасибо,что подсказали
попробуйте провести тесты, в какой кодировке по факту приходит заносимое в гридвью значение.каким оно оттуда выходит (тут,я так понимаю, надо отловить ctrl+c и вывести содержимое буфера)
0
7 / 7 / 0
Регистрация: 19.05.2010
Сообщений: 49
09.09.2010, 16:44  [ТС]
Проверил , в буфер приходит без ошибок кодировки
0
 Аватар для Terion
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
09.09.2010, 16:47
без ошибок кодировки - это в смысле, оно нормально отобразилось, или в смысле, кодировки до и после равнозначны?
0
7 / 7 / 0
Регистрация: 19.05.2010
Сообщений: 49
09.09.2010, 16:51  [ТС]
Это всмысле я выплюнул содержимое буфера обмена в месадж бокс через Clipboard.GetText() и там все отобразилось нормально
0
 Аватар для Terion
271 / 203 / 13
Регистрация: 18.06.2010
Сообщений: 491
09.09.2010, 16:53
но согласитесь,это не значит, что там некривая кодировка, которую поняла винда, но не понял эксель)
я имею в виду, что хорошо бы проследить цепочку преобразований кодировок (если они есть).и отсюда уже танцевать, может, в самой бд ее поменять надо, а может, все валить на гридвью
0
7 / 7 / 0
Регистрация: 19.05.2010
Сообщений: 49
09.09.2010, 16:58  [ТС]
В БД точно ничего менять не надо . Потому как это болезненно скажется на всех остальных приложениях, тем более какя уже говорил , 2010 студия отработала с этими же данными без проблем. А насчет цепочки преобразования кодировок , может подскажите каким образом все это можно проследить ?
0
7 / 7 / 0
Регистрация: 19.05.2010
Сообщений: 49
10.09.2010, 11:49  [ТС]
Проблему решил (надоумили добрые люди). Так что если кому интересно вот метод который поборол мою беду:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void copySelectedRowsToClipboard(DataGridView dgv)
        {
            dgv.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
 
            Clipboard.Clear();
            if (dgv.GetClipboardContent() != null)
            {
                Clipboard.SetDataObject(dgv.GetClipboardContent());
                Clipboard.GetData(DataFormats.Text);
                IDataObject dt = Clipboard.GetDataObject();
                if (dt.GetDataPresent(typeof(string)))
                {
                    string tb = (string)(dt.GetData(typeof(string)));
                    Encoding encoding = Encoding.GetEncoding(1251);
                    byte[] dataStr = encoding.GetBytes(tb);
                    Clipboard.SetDataObject(encoding.GetString(dataStr));
                }
            }
            dgv.ClipboardCopyMode = DataGridViewClipboardCopyMode.Disable;
        }
Потом этот метод вызываем из события KeyDown у dataGridView:
C#
1
2
3
4
5
6
7
8
private void dataGridView_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Control && e.KeyCode == Keys.C)
                if (((DataGridView)sender).SelectedCells.Count > 0)
                {
                    copySelectedRowsToClipboard((DataGridView)sender);
                }
        }
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.09.2010, 11:49
Помогаю со студенческими работами здесь

Копирование текста в буфер обмена
Подскажите код с помощью которого можно будет скопировать текст в буфер обмена в Android на языке c#.

Копирование из файла в буфер обмена
Господа, подскажите возможно ли реализовать на bat файлах следующее - необходимо чтобы при выполнении бат файла происходило копирование ...

Буфер обмена | копирование/вставка
Допустим у на программа сгенерировала рандомное число, но оно очень большое как реализовать запись этого числа в буфер обмена что бы...

Копирование файлов в буфер обмена
Можно ли реализовать с помощь Qt копирование файлов в буфер обмена? (По списоку путей к файлам ) Или только через WinApi ...

Копирование информации в буфер обмена
Добрый вечер. У меня следующая проблема: внутри макроса не получается сделать копирование в буфер обмена. Нужно, чтобы макрос...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru