본문 바로가기
업무 자동화 매크로

엔지엠 RPA 매크로 - 엑셀 라이브러리를 이용해서 커스텀 모듈 기능을 확장하는 방법.

by 오토픽 2025. 9. 6.
반응형

안녕하세요. 엔지엠소프트웨어입니다.

최근 엔지엠 RPA 매크로를 업무 자동화에 활용하는 빈도가 늘어나면서, 엑셀 관련 문의가 많습니다.
오늘은 엑셀 데이터를 빠르고 효율적으로 처리하는 방법을 소개합니다.


1. COM 기반 엑셀 처리의 한계

엔지엠 에디터에서 기본 제공하는 엑셀 기능은 COM 방식을 사용합니다.
하지만 COM은 다음과 같은 단점이 있습니다.

  • 처리 속도가 느림
  • 세션 내에서만 연속 처리 가능
  • 반복문 사용 시 리소스 낭비가 심함

반복 작업마다 COM 마샬링을 다시 요청하기 때문에 성능 저하가 발생합니다.

그래서 엑셀의 범위를 한 번에 처리하는 방법이 좋지만, 이 경우 반복 구간마다 세부 처리가 어렵다는 단점이 있습니다.

 

 

2. 엑셀 처리 확장 – 커스텀 기능 활용

엔지엠 RPA 매크로는 커스텀 확장 기능을 제공합니다.
이 기능을 활용하면 엑셀 데이터를 더 효율적으로 핸들링할 수 있습니다.


2-1. Visual Studio 프로젝트 생성

  1. Visual Studio Community 실행
  2. 새로운 프로젝트 추가 → 클래스 라이브러리
  3. 프로젝트 이름: CustomExcelReader

대부분의 개발자들은 필요한 기능을 구글에서 검색 후 약간 수정하여 활용합니다.
프로젝트마다 업무 로직이 다르므로, 일부 기능은 직접 구현이 필요합니다.

 

 

2-2. NuGet 패키지 설치

  1. 프로젝트에서 우클릭 → NuGet 패키지 관리
  2. 찾아보기 탭에서 "excel" 검색
  3. 아래 2개 패키지 설치
    • ExcelDataReader
    • ExcelDataReader.DataSet

 

 

 

3. 엑셀 데이터 읽기 코드

아래 코드는 엑셀 데이터를 읽어 DataTable에 저장하는 기본 예제입니다.

using ExcelDataReader;
using System;
using System.ComponentModel;
using System.Data;
using System.Drawing.Design;
using System.IO;
using System.Xml.Serialization;

namespace CustomExcelReader
{
    [Serializable]
    public class ExcelDataReaderModel : NGM.Models.Interface.BaseCustomToolModel, NGM.Models.Interface.IDataTable
    {
        public override string DisplayCategory => "NGMsoftware";
        public override string DisplayName => "엑셀 데이타 리더";

        [XmlIgnore]
        [Category("Data")]
        [DisplayName("엑셀 데이타")]
        [Description("엑셀에서 읽어온 데이타를 표시합니다.")]
        [Browsable(true)]
        [ReadOnly(true)]
        [DefaultValue(null)]
        [Editor(typeof(NGM.Models.TypeEditor.DataTableEditor), typeof(UITypeEditor))]
        public DataTable ExecuteDataTable { get; set; }

        [Category("Action")]
        [DisplayName("엑셀 파일 선택")]
        [Description("데이타를 가져올 엑셀 파일을 선택하세요.")]
        [Browsable(true)]
        [DefaultValue(null)]
        [Editor(typeof(NGM.Models.TypeEditor.OpenFileSelectorEditor), typeof(UITypeEditor))]
        public string FullName { get; set; }

        public override void Execute()
        {
            using (var stream = File.Open(FullName, FileMode.Open, FileAccess.Read))
            {
                using (var reader = ExcelReaderFactory.CreateReader(stream))
                {
                    ExecuteDataTable = reader.AsDataSet().Tables[0];
                }
            }
        }
    }
}

 

 

이 코드는 단순하게 엑셀의 데이타를 읽어서 DataTable에 넣어주고 있습니다. 결과는 아래와같이 확인할 수 있습니다.

 

 

  • 엑셀 데이터를 DataTable로 읽어와 매크로에서 활용 가능
  • 기본 반복 작업 없이도 한 번에 처리 가능

3-1. 배열로 처리하는 방법

엑셀 데이터를 1차원 배열로 처리하고 싶다면 아래와 같이 코드를 수정할 수 있습니다.

public override void Execute()
{
    if (RowDataList == null) RowDataList = new List<string>();

    using (var stream = File.Open(FullName, FileMode.Open, FileAccess.Read))
    {
        using (var reader = ExcelReaderFactory.CreateReader(stream))
        {
            do
            {
                for (int r = 0; r < 5; r++)
                {
                    reader.Read();
                    List<string> newRow = new List<string>();
                    for (int c = 0; c < 3; c++)
                    {
                        string value = reader.GetString(c);
                        newRow.Add(value);
                    }
                    RowDataList.Add(string.Join(",", newRow));
                }
            } while (reader.NextResult());
        }
    }
}

 

 

  • 결과: 1차원 배열에 콤마(,)로 구분된 값 저장
  • Row와 Column 반복 처리 가능 → 원하는 조건 필터링 가능

4. 데이터 가공과 응용

  • 특정 열이나 행만 추출 가능
  • 조건에 따라 필터링, 가공 가능
  • 개발자라면 원하는 형태로 자유롭게 응용 가능

일반 사용자가 하기에는 다소 복잡하지만, 업무 자동화를 위한 강력한 기능입니다.


마무리

엔지엠 RPA 매크로와 커스텀 엑셀 처리 기능을 활용하면 반복적인 엑셀 작업을 효율적으로 자동화할 수 있습니다.
COM 기반 엑셀 처리의 한계를 넘어, 성능과 유연성을 동시에 확보할 수 있는 방법입니다.


추천 태그
#엔지엠소프트웨어 #엔지엠RPA #오토픽 #매크로 #업무자동화 #엑셀자동화 #ExcelDataReader #CustomExcelReader

반응형