powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вставить данные из Clipboard в DatagridView
6 сообщений из 6, страница 1 из 1
Вставить данные из Clipboard в DatagridView
    #38311515
Lexx_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Подскажите, пожалуйста, как реализовать вставку данных из таблица Excel->Clipboard->Datagrid (DataSet).
Спасибо.
...
Рейтинг: 0 / 0
Вставить данные из Clipboard в DatagridView
    #38311536
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexx_SQL,

.. вернитесь на 3 года назад ..

http://www.sql.ru/forum/796152/poluchenie-tablicy-excel-iz-bufera-obmena-v-formate-xml
...
Рейтинг: 0 / 0
Вставить данные из Clipboard в DatagridView
    #38311539
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вставить данные из Clipboard в DatagridView
    #38311560
Lexx_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо за ответы...

Нашел такой вот выход. Попробовал, работает.


DataGridView + вставка из буфера обмена
Если вы еще с этим не сталкивались - то я вас обрадую: стандартный DataGridView в буфер обмена данные копировать умеет, а вот обратно - нет :( Однако, решение данной проблемы есть.


- В свойствах формы прописать свойство keypreview равным true
- В KeyUp добавить следующий обработчик событий:

private void form1_KeyUp(object sender, KeyEventArgs e)
{
//if user clicked Shift+Ins or Ctrl+V (paste from clipboard)
if ((e.Shift && e.KeyCode == Keys.Insert) || (e.Control && e.KeyCode == Keys.V))
{
char[] rowSplitter = { '\r', '\n' };
char[] columnSplitter = { '\t' };

//get the text from clipboard
IDataObject dataInClipboard = Clipboard.GetDataObject();
string stringInClipboard = (string)dataInClipboard.GetData(DataFormats.Text);

//split it into lines
string[] rowsInClipboard = stringInClipboard.Split(rowSplitter, StringSplitOptions.RemoveEmptyEntries);

//get the row and column of selected cell in grid
int r = grid.SelectedCells[0].RowIndex;
int c = grid.SelectedCells[0].ColumnIndex;

//add rows into grid to fit clipboard lines
if (grid.Rows.Count < (r + rowsInClipboard.Length))
grid.Rows.Add(r + rowsInClipboard.Length - grid.Rows.Count);

// loop through the lines, split them into cells and place the values in the corresponding cell.
for (int iRow = 0; iRow < rowsInClipboard.Length; iRow++)
{
//split row into cell values
string[] valuesInRow = rowsInClipboard[iRow].Split(columnSplitter);

//cycle through cell values
for (int iCol = 0; iCol < valuesInRow.Length; iCol++)
{
//assign cell value, only if it within columns of the grid
if (grid.ColumnCount - 1 >= c + iCol)
grid.Rows[r + iRow].Cells[c + iCol].Value = valuesInRow[iCol];
}
}
}
}
...
Рейтинг: 0 / 0
Вставить данные из Clipboard в DatagridView
    #38311926
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexx_SQL,

если хотите получить совет по коду, оформляйте его тэгами SRC, этот вырвиглаз никто читать не будет
...
Рейтинг: 0 / 0
Вставить данные из Clipboard в DatagridView
    #38315473
Ermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще один совет по коду

вынесете всю Вашу маяту, пардон работу, с DataGridView в отдельный метод, а в обработке события form1_KeyUp оставьте только проверку и вызов своего медтода.

Ну и еще один совет, просто не могу удержаться
Оставьте в покое бедный DataGridView и вставляйте данные в источник данных, не знаю что там у Вас, DataTable наверное...
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вставить данные из Clipboard в DatagridView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]