Excel Script
Excel Script 이벤트는 함수기반으로 엑셀을 컨트롤 할 수 있습니다.
1. Excel Script 이벤트의 Main Context에서 CellExControlClass 클래스 목록을 보면 함수 종류와 사용법에 대하여 알 수 있습니다.
2. Event Properties
- Event Name : 이벤트 이름
- Stop If Error : 에러 발생 시 중지 여부
- Use Screenshot Log : 스크린샷 로그 저장 여부
- Excel ID : 엑셀 ID 값
3. CellExControlClass 함수 사용법 https://docs.devexpress.com/OfficeFileAPI/DevExpress.Spreadsheet.Workbook._methods 참조
-CellExControlClass_Example.cs
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Text;
using System.Drawing;
using System.Drawing.Printing;
using System.Text.RegularExpressions;
public partial class CustomScript
{
public void CeLLEx_Script(CeLLExControlClass xl)
{
//파일 실행
xl.LoadDocument(@"C:\CheckMATE\RPA\test.xlsx");
//시트추가
xl.Worksheets.Add("신규시트1");
xl.Worksheets.Add("신규시트2");
xl.Worksheets.Add("신규시트3");
//시트삭제
xl.Worksheets.Remove(xl.Worksheets[0]);
//수정할 시트선언
Worksheet worksheet2 = xl.Worksheets[0];
//신규시트1 활성화
xl.Worksheets.ActiveWorksheet = worksheet2;
//활성화된 활성화시트정보
var active_sheet = xl.Worksheets.ActiveWorksheet;
PrintLog("* 활성화시트정보: " + active_sheet.ToString());
PrintLog("* 문서시트 개수: " + xl.Sheets.Count);
//값입력
//active_sheet.Range["A:A"].Value = "AA";
//active_sheet.Range["2:2"].Value = 22;
active_sheet.Range["C4:F4"].Value = 40;
active_sheet.Range["C5:F5"].Value = 50;
active_sheet.Range["C6:F6"].Value = 60;
active_sheet.Cells["H8"].Value = "셀";
//글씨체 설정
active_sheet.Cells ["H8"].FillColor = Color.Yellow;
active_sheet.Cells ["H8"].Font.Color = Color.Blue;
active_sheet.Cells ["H8"].Font.Bold = true;
//특정셀 선택
xl.Worksheets.ActiveWorksheet.Selection = active_sheet.Range["C6:F6"];
xl.Worksheets.ActiveWorksheet.SelectedCell = active_sheet.Cells ["H8"];
//현재 활성화된 셀정보 추출
CellRange act_cell = active_sheet.Selection;
PrintLog("\n* 활성화셀정보: " + act_cell.ToString());
//특정값 붙여넣기
active_sheet.Cells ["H9"].Value = active_sheet.Cells ["H8"].Value;
//특정영역 붙여넣기
active_sheet.Range ["K4:M6"].CopyFrom(active_sheet.Range ["C4:F6"]);
active_sheet.Range ["K9"].CopyFrom(active_sheet.Range ["C4:F6"]);
//현재 시트에서 사용하고 있는 문서 영역정보
CellRange nowall = active_sheet.GetUsedRange();
string used_range = nowall.GetReferenceA1();
string lastcell = used_range.Substring(used_range.IndexOf(":") + 1, used_range.Length - used_range.IndexOf(":") -1);
string lastcol = Regex.Replace(lastcell, @"\d", "");
string lastrow = Regex.Replace(lastcell, @"\D", "");
PrintLog("\n* 시트 사용영역: " + used_range);
PrintLog("****** " + nowall.ColumnCount);
PrintLog("* 마지막셀: " + lastcell);
PrintLog("* lastcol: " + lastcol);
PrintLog("* lastrow: " + lastrow + "\n");
//현재 시트에서 데이터 찾기
IEnumerable<Cell> find = active_sheet.Search("60");
//특정 범위에서 데이터 찾기
//IEnumerable<Cell> find = active_sheet.Range ["K4:M6"].Search("60");
foreach (Cell cell in find)
{
PrintLog("* 찾은 셀: " + cell);
cell.Value = "수정";
}
//셀병합
active_sheet.MergeCells(active_sheet.Range ["A1:P1"]);
active_sheet.MergeCells(active_sheet.Range ["A2:P2"]);
//셀병합해제
active_sheet.UnMergeCells(active_sheet.Range ["A2:P2"]);
//값추출하여 데이터테이블 생성
//열: A열=0, B열=1, C열=3 ...
//행: 1행=0, 2행=1, 3행=2 ...
int startcol = nowall.LeftColumnIndex; //C열
int startrow = nowall.TopRowIndex; //4행
int endcol = nowall.RightColumnIndex; //N열
int endrow = nowall.BottomRowIndex; //11행
//데이터 테이블 초기화
GETDT = new DataTable();
//컬럼생성
for (int C = 0; C <= endcol-startcol; C++)
{
GETDT.Columns.Add("col" + C.ToString());
}
//데이터테이블값 입력
for (int R = startrow; R <= endrow; R++)
{
//로우생성
GETDT.Rows.Add();
for (int C = startcol; C <= endcol; C++)
{
//각 값 지정
GETDT.Rows [R - startrow] [C - startcol] = active_sheet.Cells[R, C].Value.ToString();
}
}
//다른이름으로 저장
xl.SaveDocument(@"C:\CheckMATE\RPA\test2.xlsx");
//종료는 밖에서
}
}
Created with the Personal Edition of HelpNDoc: Write eBooks for the Kindle