while True do begin // while
if ui_Stop then Break;
Inc(li_XlsRow);
Inc(li_Row);
Inc(li_Count);
sg1.Cells[0, li_Row] := inttostr(li_Row);
for li_colcnd := 1 to file_col do begin
sg1.Cells[li_colcnd, li_Row] := Trim(XL.WorkBooks[1].WorkSheets[1].Cells[li_XlsRow, li_colcnd]);
end;
if Trim(XL.WorkBooks[1].WorkSheets[1].Cells[li_XlsRow, 2]) = '' then break;
StatusBar1.Panels[1].Text := ' ' + IntToStr(li_Count) + ' 건이 조회되었습니다.' ;
Application.ProcessMessages;
end; //while True do begin
소스는 for문으로 그리드 셀이 하나식 넣는 방식입니다. vb에서는 메트릭스방식이
있어 그나마 빠르다고 하는데 row가 몇만건도 있고 cpu도 많이 잡아먹어서 어떻게
개선할수 있나 해서요.
루틴은 어떤식으로 할지 모르지만..
전 엑셀 데이터통신에서 레코드형식의 데이터들은 클립보드를 통해서 이동 시킵니다.
(약점은 작동 중간에 포커스 이동시키면 정상작동 보장 못함)
만약 정규화된 포맷이라면 ADO를 사용해도 쓸만할 겁니다.
(아직 한번도 써먹지는 못했음. ^^)