블로그 이미지
게임개발자 그건일

카테고리

분류 전체보기 (236)
개발 (139)
취미생활 (75)
기타 (20)
Total102,741
Today21
Yesterday20

'ADO'에 해당되는 글 2건

  1. 2012.04.03 ADO : variant -> date
  2. 2012.03.11 c++ : ado 로 엑셀파일(.xls .xlsx) 읽기 (4)

http://mashedon.egloos.com/660045

좋네요

저작자 표시
신고
Posted by 그건일
TAG ADO, VT_DATE

소스 :  

xlsreader.zip



csv 파일로 뽑으면 읽기 편리하지만 그러면 xls 을 csv 로 변환하는 과정을 거쳐야 하므로 불편합니다.
엑셀파일을 읽기 위해 ado 를 사용해야하는데 엑셀파일을 읽기위해서는 드라이버가 필요합니다.
(office 가 설치되어있어야 한다는 의미)

의도하지 않았지만 수식의 결과값을 읽어올 수 있습니다. (그래서 csv 변환 과정이 필요 없습니다.)
예: =sum(A1:A4)


//-------------------------------- 
// C++ 코드
//--------------------------------

BAdoExcel excel;

xlsreader.zip


excel.Open("sample.xlsx", "Sheet1");
for(int r=0; r<excel.m_row; r++)
{
for(int c=0; c<excel.m_col; c++)
{
printf_s("%d,%d = %s\n", r, c, excel.GetValue(r, c));
}
}

이런 형식으로 사용합니다.

수식으로 작성된 값도 읽을 수 있으며 여러모로 좋으나 단점이 있습니다.
ADO 가 DB 를 읽는 방식으로 되어있어서 생기는 문제로 추측됩니다.

단점


첫줄은 읽을 수 없음
  첫번째 라인은 컬럼명으로 인식합니다. 그래서 값으로 읽어올 수 없습니다.

두번째 줄의 값이 기준 타입이 됩니다
 1개의 컬럼은 동일의 타입 값만 들어갈 수 있습니다. (DB 에서 그렇쵸)
 그래서 엑셀 역시 그런식으로 추측됩니다.
 만약 A 열에 글자를 쓰게 되면 읽을 수 없게 됩니다.


추가
lua_tinker 관련 코드를 추가합니다.
스크립트에서 사용할 수 있도록 만들어서 제공하기 위해 제작하였습니다.

//------------------------------------------------
// lua_tinker bind code
//------------------------------------------------
lua_State* L = lua_open();
luaopen_base(L);
luaopen_string(L);

lua_tinker::class_add<BAdoExcel>(L, "Excel");
lua_tinker::class_con<BAdoExcel>(L, lua_tinker::constructor<>());
lua_tinker::class_def<BAdoExcel>(L, "Open", &BAdoExcel::Open);
lua_tinker::class_def<BAdoExcel>(L, "Val", &BAdoExcel::GetValue);
lua_tinker::class_mem<BAdoExcel>(L, "row", &BAdoExcel::m_row);
lua_tinker::class_mem<BAdoExcel>(L, "col", &BAdoExcel::m_col);

//------------------------------------------------
// lua code
//------------------------------------------------
e = Excel()
e:Open("sample.xls", "Sheet1");
print("row:" .. e.row);
print("col:" .. e.col);
for r=0, e.row-1, 1 do
for c=0, e.col-1, 1 do
  print("[" .. r .. "][" .. c .. "][" .. e:Val(r,c) .. "]");
end
end
 


저작자 표시
신고
Posted by 그건일
TAG ADO, C++, xls, xlsx

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

티스토리 툴바