본문 바로가기
!?/C++

QT Excel Automation

by Where's my namespace 2014. 8. 25.

  QT로 Excel을 읽어, 원하는 작업을 하는 프로그램을 제작해 보았다.


처음에는 다른 간단한 텍스트 파일을 읽는 것처럼, 단순하게 파일을 읽어서 처리할 수 있을줄 알았다. 


허나, C++에서는 그리 간단하게 엑셀을 읽을수가 없고, 만들어진 라이브러리를 사용하거나, 파일을 읽는것부터 기능을 구현해


야한다. 간단하게 보면, 엑셀에는 행과 열이 존재하고, 이 행과 열을 이용해 각 셀에 접근한다. 이를 구현해둔 라이브러리는 생


각보다 많이 존재하나, 간단하고 직관적이면서 쉽게 구현된 것들은 대부분 유료이다. 



  처음에는 MFC나, Win API를 이용해서 구현하려고 했으나, 이를 사용해 본 적이 없어, 만만한 QT로 제작하려는 계획을 


세웠다.  QT로 엑셀 파일을 읽는 방법은 여러가지가 있다. ODBC를 이용해 엑셀에 DB처럼 접근하는 방법. 누군가 제작해


둔 라이브러리를 사용하는 방법, xml 파싱을 이용해 접근하는 방법이 존재한다. 각 방법마다  어떤 방식을 쓰면 어떤 기능을 


제대로 사용할 수 없다던지 하는 단점들이 존재한다. 이와 관련한 정보는 



http://qt-project.org/wiki/Handling_Microsoft_Excel_file_format



위의 url로 가서 확인할 수 있다. 



  내가 구현한 기능은, 어떤 주문 내역이 들어오면, 구입한 물품정보, 구입 경로를 이용해 사은품을 지급하는 것을 자동으로 계


산해 주는 기능이다. 이 기능을 사용하기 위해, BasicExcel이라는 Free 라이브러리를 이용했다. 



http://www.codeproject.com/Articles/13852/BasicExcel-A-Class-to-Read-and-Write-to-Microsoft 



Basic Excel은 위의 url을 통해서 소스코드를 받을 수 있다. 받은 소스코드에는 예제도 포함되 있고, 위의 url에도, 간단하게 함


수들의 정보가 나타나 있으므로, 찾아서 사용하면 된다.



Bacis Excel의 단점은 *.xlsx 형태의 엑셀 파일은 열수없다. 수정하려는 엑셀파일의 형식을 확인해서 그에 맞는 라이브러리를 


찾아서 사용해야한다. 




/* 수정해야 할 문제점 */ 


1. 정확한 이유를 모르겠으나, 오피스 2007의 엑셀에서는 자유롭게 열리나, 오피스 2013의 엑셀에서는 수정된 파일이 열리지 않

는다.


2. 한글 경로, 파일명에 한글이 들어갈 경우 오류 발생. 





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

QT File browser  (0) 2014.08.29
형변환  (0) 2012.10.12
연산자 오버로딩  (0) 2012.10.12
접근 범위, 존속 기간  (0) 2012.09.14
Exception Handling  (0) 2012.09.10