티스토리 뷰
Visual Studio 2012
MFC에서 엑셀 파일을 사용해보자.
MS에서 제공해주는 자료를 바탕으로 모듈화 하였다.
자료는 아래 링크에서 다운 받으면 된다.
ExcelEx 소스코드
중요, Microsoft Excel 프로그램이 설치 되어 있어야 한다.
사용 하는 함수는 아래와 같다.
엑셀 실행 관련
- StartExcel()/QuitExcel(): 엑셀 실행/종료 시 사용한다.
- SaveData(): 편집한 엑셀 내용을 저장한다.
- ShowExcel(bShow): 실행한 엑셀 프로그램을 보여주거나/숨긴다.
WorkBook 관련
- OpenWorkBook(FilePath): FilePath에 있는 Workbook을 실행한다.
- CloseWorkBook(): 실행된 Workbook을 종료한다.
- CreateWorkBook(FilePath): FilePath에 엑셀 파일을 생성한다.
Sheet 관련
- SelectSheet(nNum/strName): 시트 번호(nNum)/시트 이름(strName)을 사용하여 시트를 선택한다.
- AddSheet(strName): strName의 이름을 가진 시트를 생성한다.
- SetSheetName(strName): SelectSheet()로 선택된 시트의 이름을 strName으로 변경한다.
엑셀 문서 사용 관련
- InsertPicture(nCol, nRow, strPicPath): nCol, nRow에 위치한 셀에 strPicPath에 위치한 그림 파일을 삽입한다.
- InsertString(nCol, nRow, strValue): nCol, nRow에 위치한 셀에 strValue의 값을 입력한다.
- ReadData(nCol, nRow): nCol, nRow에 위치한 셀의 값을 CString으로 읽어온다.
- GetExcelPos(nCol, nRow): nCol, nRow의 숫자를 'A1', 'Z3' 같은 엑셀 셀에 맞게 변환한다.
예제로 CExcelTest라는 프로젝트를 만들었다.
사용방법은 아래와 같다.
- 파일을 받아 원하는 프로젝트 내에 넣는다.
- 사용하려는 프로젝트 소스에서 ExcelEx.h를 include 하고 public으로 CExcelEx 변수를 선언한다.
// CExcelTestDlg.h : 헤더 파일 // #pragma once #include "ExcelEx\ExcelEx.h" // CCExcelTestDlg 대화 상자 class CCExcelTestDlg : public CDialogEx { // 생성입니다. ... virtual BOOL OnInitDialog(); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: CExcelEx m_Excel; afx_msg void OnBnClickedBtnTest(); };
- IDC_BTN_TEST의 이름으로 버튼을 하나 생성하고 버튼 클릭 이벤트를 생성하여 아래와 같이 적는다.
void CCExcelTestDlg::OnBnClickedBtnTest() { m_Excel.StartExcel(); m_Excel.CreateWorkBook("D:\\test.xlsx"); m_Excel.SelectSheet(1); m_Excel.SetSheetName("TEST1"); m_Excel.InsertString(3,3,"HELLO"); m_Excel.SaveData(); m_Excel.CloseWorkBook(); m_Excel.QuitExcel(); }
- 위와 같이 적고 실행하게 되면 D드라이브 폴더에 test.xlsx라는 엑셀 파일이 생성되고, 아래와 같은 화면을 볼 수 있게 된다.
시트 이름은 "TEST1"로, C3셀에 "HELLO"가 표기 되어있다.
- 위와 같이 사용하면 된다. 기존 파일을 불러올 때도, 굳이 OpenWorkBook()을 사용하지 않고 CreateWorkBook()을 사용해도 무방하다.
위의 소스 사용 시 순서는 아래와 같이 사용하면 된다.
StartExcel-> CreateWorkBook() -> SelectSheet() -> 시트 이름 변경 및 문서 작업 -> SaveData() -> CloseWorkBook() -> QuitExcel()
*21-01-19 추가
해당 프로그램을 사용할 때, 만약 스레드 안에서 사용 하려면
스레드 시작 부분에 아래 코드를 추가하여야 한다.
AfxOleInit() 을 안하면 StartExcel() 시 에러 발생한다.
if( !AfxOleInit() ) { AfxMessageBox("Could not initialize COM dll"); return; }
끝
'Programming > MFC(C++)' 카테고리의 다른 글
[Visual Studio] sdf, ipch 파일 관리하기 (0) | 2019.12.23 |
---|---|
[MFC] C2065 선언되지 않은 식별자입니다. 에러 해결 (0) | 2019.12.12 |
[MFC] 컨트롤의 배경색 변경하기/투명하게(라디오버튼,텍스트박스 등) (1) | 2019.10.14 |
[MFC] 다이얼로그(대화상자) 배경화면 바꾸기 (0) | 2019.10.14 |
[MFC] 로또 번호 뽑아보자(rand()활용) (0) | 2019.01.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 부가가치세
- MSSQL
- 스쿠트항공 환불받기
- MFC Modeless
- 부가가치세전산매체
- Sticky Notes Loading
- 전자신고파일설명서
- 청년내일채움공제 만기신청
- #자동업데이트
- 항공알파벳
- sqlite3
- c++
- 전자신고변환
- 모달리스
- Modeless
- MFC
- 소켓
- SendMessage
- 청년내일채움공제
- 모달리스 다이얼로그
- 스티커메모로드중
- 해외송금확인
- 법정동코드
- MFC ADO
- ADO
- CMFCBUTTON
- ADODB
- MXCOMPONENT
- 프로세스이름변경
- 세금계산서합계표양식
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함