Q&A

  • 엑셀에서 스트링그리드로 옮길때 속도개선하려면 ?
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도 많이 잡아먹어서 어떻게
개선할수 있나 해서요.
1  COMMENTS
  • Profile
    이중철 2005.04.20 03:32
    클립보드를 활용하여 보세요
    루틴은 어떤식으로 할지 모르지만..
    전 엑셀 데이터통신에서 레코드형식의 데이터들은 클립보드를 통해서 이동 시킵니다.
    (약점은 작동 중간에 포커스 이동시키면 정상작동 보장 못함)

    만약 정규화된 포맷이라면 ADO를 사용해도 쓸만할 겁니다.
    (아직 한번도 써먹지는 못했음. ^^)