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 |