C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[56574] 엑셀 범위 지정 델파이코드를 빌더로 변환 좀 부탁드려요 ㅜㅜ
나그네 [] 2650 읽음    2009-04-02 16:15
OLE관련 함수들이 델파이랑 빌더랑 많이 틀려서 변환을 할수가 없네요
동일하게 변환이 아니더라도, 참조할수 있는 정보만이라도 리플 달아주시면 감사하겠습니다.
목적은 엑셀 대량의 셀을 빠르게 읽어오려고 합니다. 단순 루프로는 무지하게 느려서 쓸수가 없어요...

아니면 해당시트를 CSV나 TXT로 저장할 수 있는 함수명이라도 알려주시면 더욱 감사하겠습니다.
차라리 csv로 저장해서 씨함수로 읽어버리는게 천배는 빠를거 같습니다.

var
  xls, wb, Range: OLEVariant;
  arrData: Variant;
begin
  {create variant array where we'll copy our data}
  arrData := VarArrayCreate([1, yourStringGrid.RowCount, 1, yourStringGrid.ColCount], varVariant);

  {fill array}
  for i := 1 to yourStringGrid.RowCount do
    for j := 1 to yourStringGrid.ColCount do
      arrData[i, j] := yourStringGrid.Cells[j-1, i-1];

  {initialize an instance of Excel}
  xls := CreateOLEObject('Excel.Application');

  {create workbook}
  wb := xls.Workbooks.Add;

  {retrieve a range where data must be placed}
  Range := wb.WorkSheets[1].Range[wb.WorkSheets[1].Cells[1, 1],
                                  wb.WorkSheets[1].Cells[yourStringGrid.RowCount, yourStringGrid.ColCount]];

  {copy data from allocated variant array}
  Range.Value := arrData;

  {show Excel with our data}
  xls.Visible := True;
end;

+ -

관련 글 리스트
56574 엑셀 범위 지정 델파이코드를 빌더로 변환 좀 부탁드려요 ㅜㅜ 나그네 2650 2009/04/02
56593     [자답] 엑셀 셀 범위지정해서 읽어오기 (루프없이 클립보드사용) 나그네 6072 2009/04/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.