안녕하세요. 소심비형입니다. 오늘 알아볼 내용은 데이타 핸들러 액션입니다. NGM은 엑셀 xls, xlsx, csv를 비롯한 데이타베이스 기능을 사용하여 메모리에 DataTable로 불러올 수 있습니다. 예를 들어 아래와 같은 데이타를 순환하면서 데이타를 확인하고 용도에 맞게 실행하고 싶을 수 있습니다. 참고로, 아래 데이타는 웹크롤링 기능을 이용하여 비트코인 거래소의 내용을 가져와서 데이타베이스에 저장한 자료입니다.
이런 데이타들은 열과 행으로 소스에 접근이 가능합니다. 예를 들어 10행에 3열이라면 9602000 데이타를 가져올 수 있죠. 이렇게 메모리에 적재된 데이타 테이블에서 열과 행으로 접근하기 위해 사용할 수 있는 액션입니다. 물론, 엑셀로 정리한 자료들도 순환 반복하면서 데이타를 가져오고 가공해서 어떤 처리를 하는 자동화된 업무 매크로를 쉽게 만들 수 있습니다. 아래는 전체 소스입니다.
-
using System;
-
using System.Collections.Generic;
-
using System.ComponentModel;
-
using System.Data;
-
using System.Linq;
-
using System.Text;
-
using System.Threading.Tasks;
-
-
namespace CustomNGM
-
{
-
[Serializable]
-
public class DataTableHandlerModel : NGM.Models.Interface.BaseCustomToolModel, NGM.Interface.IResetDataProperty
-
{
-
/// <summary>
-
/// 도구 상자에 표시할 카테고리 이름입니다.
-
/// </summary>
-
public override string DisplayCategory { get { return "NGM 커스텀 도구"; } }
-
-
/// <summary>
-
/// 도구 상자에 표시할 액션 이름입니다.
-
/// </summary>
-
public override string DisplayName { get { return "데이타 핸들러"; } }
-
-
[Category("Data")]
-
[DisplayName("데이타")]
-
[Description("사용자가 선택한 열과 행의 데이타입니다.")]
-
[Browsable(true)]
-
[ReadOnly(true)]
-
public string Data { get; set; }
-
-
[Category("Data")]
-
[DisplayName("데이타 테이블")]
-
[Description("값을 조회하여 변수에 저장할 데이타 테이블입니다.")]
-
[Browsable(true)]
-
[ReadOnly(true)]
-
public DataTable DataTable { get; set; }
-
-
[Category("Action")]
-
[DisplayName("행 위치")]
-
[Description("데이타를 가져올 데이타 테이블의 행 위치입니다. 위치는 0부터 시작합니다.")]
-
[Browsable(true)]
-
[DefaultValue(0)]
-
public int RowIndex { get; set; }
-
-
[Category("Action")]
-
[DisplayName("열 위치")]
-
[Description("데이타를 가져올 데이타 테이블의 열 위치입니다. 위치는 0부터 시작합니다.")]
-
[Browsable(true)]
-
[DefaultValue(0)]
-
public int ColumnIndex { get; set; }
-
-
[Category("Action")]
-
[DisplayName("열 이름")]
-
[Description("데이타를 가져올 데이타 테이블의 열 이름입니다. 열 위치보다 이 값이 우선 적용됩니다.")]
-
[Browsable(true)]
-
[DefaultValue(null)]
-
public string ColumnName { get; set; }
-
-
public override void Execute()
-
{
-
if (DataTable == null)
-
{
-
MainView.WriteOutput("데이타 테이블이 없습니다. 먼저 변수로부터 데이타 테이블을 가져와야 합니다.");
-
Data = null;
-
return;
-
}
-
-
if (DataTable.Rows.Count == 0)
-
{
-
MainView.WriteOutput("데이타 테이블에 데이타가 없습니다.");
-
Data = null;
-
return;
-
}
-
-
try
-
{
-
int colIndex = this.ColumnIndex;
-
-
if (!string.IsNullOrEmpty(this.ColumnName))
-
colIndex = this.DataTable.Columns.IndexOf(this.ColumnName);
-
-
Data = this.DataTable.Rows[this.RowIndex][colIndex].ToString();
-
}
-
catch (Exception ex)
-
{
-
MainView.WriteOutput($"Error {ex.Message}");
-
Data = null;
-
return;
-
}
-
}
-
-
public void Initialize()
-
{
-
this.Data = null;
-
}
-
}
-
}
전체 소스는 첨부 파일로 압축되어 있습니다.
'오토 매크로' 카테고리의 다른 글
오토핫키 우회 컴파일러 (0) | 2020.02.01 |
---|---|
이미지 크기 조정 예제. (전체 소스 포함) (0) | 2020.02.01 |
VMWare 우회 커스텀 액션. (라이브러리 포함) (0) | 2020.02.01 |
NGM3과 동일하게 X, Y를 따로 계산할 수 있는 좌표 사칙연산. (0) | 2020.02.01 |
커스텀 멀티 이미지 체크. (소스 포함) (0) | 2020.02.01 |
댓글