1 Articles, Search for 'Excel automation'

  1. 2008/09/11 Excel Automation Class 0.2
Research2008/09/11 09:10



[ 제작자 Getroot]

1. 제목
    Excel Automation C++ Library 0.2

2. 형태
    Class

3. 내용
    Excel을 자동으로 제어할 수 있는 라이브러리 입니다.

4. 환경
    OS : Windows 개열
    개발툴 : MFC

5. 사용법

// 인스턴스를 초기화하고 엑셀 객체를 생성한다.
BOOL CreateExcel(void);

// Sheet 이름을 구한다.
BOOL GetSheetName(DWORD dwSheetNumber, TCHAR *pwsSheetName);
// Sheet 이름을 변경한다.
BOOL ChangeSheetName(DWORD dwSheetNumber, TCHAR *pwsSheetName);
// Sheet 갯수를 구한다.
DWORD GetSheetCount(void);
// Sheet를 추가한다.
BOOL AddSheet(TCHAR *pwsSheetName);
// Sheet을 선택한다.
BOOL SetActiveSheet(INT nSheetNum);

// 인스턴스를 초기화하고 파일을 오픈한다.
// fMode : CREATE_EXCEL_FILE, OPEN_EXCEL_FILE
BOOL OpenExcelFile(WCHAR *wsFileName, INT fMode);
// 파일을 닫고 인스턴스를 종료한다.
BOOL CloseExcelFile(void);
// 파일을 저장한다.
BOOL SaveExcelFile(void);

// Excel 창을 띄운다.
BOOL SetVisible(BOOL fOn=TRUE);

// Sheet을 선택한다.
BOOL SetActiveSheet(INT nSheetNum);

// Data를 읽어온다.
BOOL GetData(DWORD dwX, DWORD dwY, WCHAR *pwsOut, DWORD dwBufferLen);
BOOL GetData(INT nSheetNum, DWORD dwX, DWORD dwY, WCHAR *pwsOut, DWORD dwBufferLen);
// 다음칸의 데이터를 읽는다. 데이터가 비어있다면 FALSE 리턴
// fDirection: UPPER, BOTTOM, LEFT, RIGHT
BOOL GetNextData(INT fDirection, WCHAR *pwsOut, DWORD dwBufferSize);

// Data를 쓴다.
BOOL SetData(DWORD dwX, DWORD dwY, WCHAR *pwsInput);
BOOL SetData(INT nSheetNum, DWORD dwX, DWORD dwY, WCHAR *pwsOut);
// 다음칸에 데이터를 쓴다.
// fDirection: UPPER, BOTTOM, LEFT, RIGHT
BOOL SetNextData(INT fDirection, WCHAR *pwsInput);

// 검색
// pwsSeed : 검색할 단어
// pwsResult : 검색된 문장
// pdwX, pdwY : 검색된 위치

// Active page 전체를 검색
BOOL SearchAll(WCHAR *pwsSeed, WCHAR *pwsResult, DWORD &pdwX, DWORD &pdwY);
// 지정된 dwX나 dwY 좌표를 검색
BOOL SearchX(DWORD dwX, WCHAR *pwsSeed, WCHAR *pwsResult, DWORD &pdwX, DWORD &pdwY);
BOOL SearchY(DWORD dwY, WCHAR *pwsSeed, WCHAR *pwsResult, DWORD &pdwX, DWORD &pdwY);
// 다음 찾기
BOOL SearchNext(WCHAR *pwsResult, DWORD &pdwX, DWORD &pdwY);

// Active range 구하기
BOOL GetActiveRange(DWORD &pdwBX, DWORD &pdwBY, DWORD &pdwLX, DWORD &pdwLY);

-----------------------------------------------------------------------------------------------------------------------------------------------------------
6. 사용 예제
-----------------------------------------------------------------------------------------------------------------------------------------------------------
CExcelLib clsExcel;
WCHAR wsResult[MAX_STRING_BUFFER_SIZE];
DWORD dwBX, dwBY, dwLX, dwLY;
BOOL bResult;

clsExcel.OpenExcelFile(L"c:\\test.xls", OPEN_EXCEL_FILE);

clsExcel.SetActiveSheet(1);

//clsExcel.GetActiveRange(dwBX, dwBY, dwLX, dwLY);

clsExcel.SearchAll(L"bcd", wsResult, dwBX, dwBY);

while(TRUE)
{
    bResult = clsExcel.SearchNext(wsResult, dwBX, dwBY);
    if(bResult == FALSE)
   {
        break;
   }
}

clsExcel.SearchX(2, L"bcd", wsResult, dwBX, dwBY);

while(TRUE)
{
    bResult = clsExcel.SearchNext(wsResult, dwBX, dwBY);
    if(bResult == FALSE)
    {
        break;
    }
}

clsExcel.SearchY(9, L"bcd", wsResult, dwBX, dwBY);

while(TRUE)
{
    bResult = clsExcel.SearchNext(wsResult, dwBX, dwBY);
    if(bResult == FALSE)
    {
        break;
     }
}

clsExcel.CloseExcelFile();

Posted by Getroot

Leave your greetings.