IT/Visual Studio (C#)
C# XtraGrid 에 엑셀 붙여넣기 하는법
Ro85
2024. 10. 15. 17:24
반응형
using System;
using System.Windows.Forms;
using DevExpress.XtraGrid.Views.Grid;
using System.Data;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// 그리드뷰의 KeyDown 이벤트에 핸들러 추가
gridView1.KeyDown += GridView1_KeyDown;
}
private void GridView1_KeyDown(object sender, KeyEventArgs e)
{
// Ctrl+V (붙여넣기) 키가 눌렸을 때
if (e.Control && e.KeyCode == Keys.V)
{
PasteClipboardData();
}
}
private void PasteClipboardData()
{
// 클립보드에서 데이터를 가져옵니다.
string clipboardText = Clipboard.GetText();
if (string.IsNullOrEmpty(clipboardText))
return;
// 데이터를 줄 단위로 나눕니다.
string[] rows = clipboardText.Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
// 현재 그리드의 데이터 소스를 가져옵니다.
DataTable dataSource = gridControl1.DataSource as DataTable;
if (dataSource == null)
return;
// 각 줄을 셀 단위로 나누어 데이터 테이블에 추가합니다.
foreach (string row in rows)
{
string[] cells = row.Split('\t');
DataRow dataRow = dataSource.NewRow();
for (int i = 0; i < cells.Length && i < dataSource.Columns.Count; i++)
{
dataRow[i] = cells[i];
}
dataSource.Rows.Add(dataRow);
}
// 그리드를 새로고침합니다.
gridControl1.RefreshDataSource();
}
}
- KeyDown 이벤트: gridView1에 키보드 이벤트 핸들러를 추가하여, Ctrl + V 키를 감지합니다.
- PasteClipboardData: Clipboard.GetText()로 클립보드에서 데이터를 가져온 후, 이를 줄(\r\n)과 셀(\t)로 나누어 그리드의 데이터 소스(DataTable)에 추가합니다.
- 데이터 소스 갱신: 데이터를 추가한 후 gridControl1.RefreshDataSource()를 호출하여 그리드를 새로 고칩니다.
이 코드를 사용하면, 엑셀에서 복사한 데이터를 XtraGrid에 붙여넣기 할 수 있습니다.
반응형