C# 다중 Excel 데이터 Copy & Paste

초이·2023년 9월 26일
0

C# Code in Excel

목록 보기
2/2

두 개의 Excel 파일에서 데이터 Copy & Paste

해당 코드는 'test1.xlsx', 'test2.xlsx' 이라는 파일 2개가 있을 경우
'test1.xlsx'의 데이터를 읽어와 일부분의 데이터를 'test2.xlsx' 파일 내 지정 위치에 삽입하도록 작성한 코드이다.

해당 내용은 기존 UiPath Activity로도 활용이 가능하나
코드 사용 시 엑셀 폼이나 양식 형식 등이 그대로 복사된다는 점이 다르다.
(Cell 값 수식도 그대로 복사됨)

Microsoft.Office.Interop.Excel.Workbook wb = null;
Microsoft.Office.Interop.Excel.Workbook wb2 = null;
Microsoft.Office.Interop.Excel.Worksheet ws = null;
Microsoft.Office.Interop.Excel.Worksheet ws2 = null;
Microsoft.Office.Interop.Excel.Range rg = null;

Application excelapp = new Application();
wb = excelapp.Application.Workbooks.Open(Filename: @"C:\Users\test\Desktop\test1.xlsx"); // 데이터 가져올 파일
wb2 = excelapp.Application.Workbooks.Open(Filename: @"C:\Users\test\Desktop\test2.xlsx"); // 데이터 입력할 파일

ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets[1]; 
ws2 = (Microsoft.Office.Interop.Excel.Worksheet)wb2.Worksheets[1];

rg = ws.Range[in_CopyRange,ws.Cells[ws.UsedRange.Rows.Count, ws.UsedRange.Columns.Count] ]; // 데이터 가져올 범위
int row = rg.Rows.Count; // 가져온 데이터의 Row 수
rg.Copy();

rg = ws2.Range[in_PasteRange]; // 데이터 삽입할 셀 위치
rg.Insert(Microsoft.Office.Interop.Excel.XlDirection.xlDown); // 데이터 아래로 삽입

rg = ws2.Range[ ws2.Cells[row + 3 + 1, 1], ws2.Cells[row + 3 + 1, ws.UsedRange.Columns.Count] ]; 
// 데이터 삽입한 아래 열 위치 ( 삽입한 데이터까지의 Row 수 : [가져온 데이터 Row 수 + 작성할 시트의 삽입할 위치 위에 Row 수 ] + 하나 아래 열 : [1] )
rg.Delete(Microsoft.Office.Interop.Excel.XlDirection.xlUp);

rg = ws2.Range["A3", ws2.Cells[3, ws.UsedRange.Columns.Count]]; // 데이터 삽입한 위 열 삭제 (ex. 5열에 삽입 시 4열 삭제)
//rg.Delete(Microsoft.Office.Interop.Excel.XlDirection.xlUp);

wb2.Save();
wb.Save();
wb.Close();
wb2.Close();
excelapp.Quit();
profile
MacBook이 갖고싶은 살암

0개의 댓글