본문 바로가기
C & C++/C & C++

MS Office 엑셀 오토메이션 (Excel Automation)

by izen8 2011. 11. 21.

 

Reading Excel files using ODBC(코드 구루)





가령 엑셀에서 1열은 A
2열->B, 3열->C .... 26열->Z, 27열->AA, 28열->AB 식으로 명명되어 있는데


숫자 28이라는 값을 넣었을때 AB라는 문자형 변환값을 구하는 함수입니다.
BOOL NumericToExcelCol(__in int nNumericCol, __out TCHAR* pszColName)
{
    if(!pszColName)
        return FALSE;

    //엑셀 2003 버전의 경우, 행의 최대 개수가 65536 개, 열은 256개
    //엑셀 2007은 최대행이 1,048,576행이고, 최대열이 16,384열입니다
    if(nNumericCol < 1 || nNumericCol > 256)//오피스 2003에서 최대 엑셀 컬럼 크기는 256, nNumericCol가 1에서 시작
        return FALSE;

    nNumericCol -= 1;//컬럼이 1에서 시작하는 것으로 계산

    _itot(nNumericCol, pszColName, 26);
    int nLen = _tcslen(pszColName);

    for(int nLoop = 0; nLoop < nLen; nLoop++)
    {
        if(pszColName[nLoop] >= _T('0') && pszColName[nLoop] <= _T('9'))
            pszColName[nLoop] += 17;
        else
            pszColName[nLoop] -= 22;

        if(nLoop != (nLen - 1))
            pszColName[nLoop] -= 1;
    }

    return TRUE;
}


 

엑셀 오토메이션을 하다보면 열의 숫자 좌표를 영문으로 바꿔야 할때가 있습니다.

 

 

'C & C++ > C & C++' 카테고리의 다른 글

[API] 프로세스 관리 02  (0) 2011.11.24
[API] 프로세스 관리 01  (0) 2011.11.24
도스명령어(command) 얻기  (0) 2011.11.17
현재 메모리 정보 얻어오기  (0) 2011.11.17
윈도우 부팅모드 알아내기  (0) 2011.11.17

댓글