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 할 수도 있기 때문이다.
728x90
반응형
'IT > C#' 카테고리의 다른 글
[C#] Form UI Control 사이즈 일괄 변경하기 FHD to UHD(4K) (0) | 2022.12.29 |
---|---|
[C#] Tesseract OCR - 이미지에서 글자 추출하기 (WinForm) (2) | 2022.12.27 |
[C#] ZedGraph Labeling (0) | 2022.11.17 |
[C#] Array나 List에 같은 값 또는 연속된 int 값 채우기 (feat. Enumerable Range & Repeat) (0) | 2022.10.28 |
[C#] Selenium Web Crawler 이용하여 우편번호 검색하기 (458) | 2022.07.06 |