IT/C#
[C#] Excel Data Ctrl+C Ctrl+V to DataGridView
Ella.J
2022. 11. 17. 09:37
728x90
반응형
엑셀에서 데이터를 복사해서 그대로 DataGridView에 붙여넣기 하고 싶을 때.
아래의 DataGridView에서 Ctrl+V를 사용해서 복붙하도록 만들었다.
DataGridView의 Column은 개수가 정해져 있고 엑셀에서도 컬럼 개수에 맞게 복사해오도록 했다.
Row는 복사해 온 데이터의 길이에 맞게 Row를 추가하도록 했다.
아래의 코드를 참고하면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.V)
{
string s = Clipboard.GetText();
string[] lines = s.Replace("\n", "").Split('\r');
string[] fields;
if (lines.Length > 0)
{
int row = dataGridView1.CurrentCell.RowIndex;
int col = dataGridView1.CurrentCell.ColumnIndex;
if (dataGridView1.Rows.Count < (row + lines.Length)) dataGridView1.Rows.Add((row + lines.Length) - dataGridView1.Rows.Count);
foreach (string item in lines)
{
fields = item.Split('\t');
foreach (string f in fields)
{
dataGridView1[col, row].Value = f;
col++;
}
row++;
col = dataGridView1.CurrentCell.ColumnIndex;
}
}
}
}
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
DataGridViewTextBoxEditingControl tb = (DataGridViewTextBoxEditingControl)e.Control;
tb.KeyDown += new KeyEventHandler(dataGridView1_KeyDown);
e.Control.KeyDown += new KeyEventHandler(dataGridView1_KeyDown);
}
|
cs |
코드 아래의 EditingControlShowing 이벤트에 KeyDown 이벤트를 두 개 등록해줘야 한다.
DataGridView에서 왼쪽처럼 Cell을 선택한 상태에서 Ctrl+V 할 수도 있고,
오른쪽처럼 Cell이 Editing 상태로 들어가 커서가 깜빡이는 상태에서 Ctrl+V 할 수도 있기 때문이다.
DataGridView.EditingControlShowing Event (System.Windows.Forms)
Occurs when a control for editing a cell is showing.
learn.microsoft.com
728x90
반응형