|
Вставить данные из Clipboard в DatagridView
|
|||
---|---|---|---|
#18+
Добрый день! Подскажите, пожалуйста, как реализовать вставку данных из таблица Excel->Clipboard->Datagrid (DataSet). Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 16:09 |
|
Вставить данные из Clipboard в DatagridView
|
|||
---|---|---|---|
#18+
Lexx_SQL, .. вернитесь на 3 года назад .. http://www.sql.ru/forum/796152/poluchenie-tablicy-excel-iz-bufera-obmena-v-formate-xml ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 16:15 |
|
Вставить данные из Clipboard в DatagridView
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 16:15 |
|
Вставить данные из Clipboard в DatagridView
|
|||
---|---|---|---|
#18+
спасибо за ответы... Нашел такой вот выход. Попробовал, работает. 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]; } } } } ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 16:26 |
|
Вставить данные из Clipboard в DatagridView
|
|||
---|---|---|---|
#18+
Lexx_SQL, если хотите получить совет по коду, оформляйте его тэгами SRC, этот вырвиглаз никто читать не будет ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 21:33 |
|
Вставить данные из Clipboard в DatagridView
|
|||
---|---|---|---|
#18+
и еще один совет по коду вынесете всю Вашу маяту, пардон работу, с DataGridView в отдельный метод, а в обработке события form1_KeyUp оставьте только проверку и вызов своего медтода. Ну и еще один совет, просто не могу удержаться Оставьте в покое бедный DataGridView и вставляйте данные в источник данных, не знаю что там у Вас, DataTable наверное... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2013, 10:51 |
|
|
start [/forum/topic.php?fid=20&fpage=157&tid=1404424]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 336ms |
total: | 485ms |
0 / 0 |