::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  공성환(2003-04-16 10:18:13, Hit : 5276, Vote : 916
 그리드 자료 엑셀로 좀더 빠르게 보내기

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, StdCtrls, Gauges,ComObj;

type
  TForm1 = class(TForm)
    Button1: TButton;
    StringGrid1: TStringGrid;
    Gauge1: TGauge;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
  XL,WorkBook: Variant;
  i : integer;
  ArrV: OleVariant;
  Row,Col : Integer;
begin
  Screen.Cursor:= crHourGlass;
  try
    XL:= CreateOleObject('Excel.Application');
  except
    Application.MessageBox('Excel이 설치되어 있지 않습니다. 먼저 Excel을 설치하세요.',
      '오류', MB_OK or MB_ICONERROR);
    Screen     .Cursor  := crDefault;
    Exit;
  end;

  Gauge1.MaxValue   := StringGrid1.RowCount;
  Gauge1.Progress := 1;
  Application.ProcessMessages;
  try
    WorkBook := XL.WorkBooks.Add;

    //Data import
    ArrV := VarArrayCreate([0, StringGrid1.RowCount, 0, StringGrid1.ColCount], varOleStr);
    I := 0;
    for Row := 0 to StringGrid1.RowCount do
    begin
      for Col := 0 to StringGrid1.ColCount do
      begin
        Application.ProcessMessages;
        ArrV[Row, Col] := StringGrid1.cells[Col, Row];
      end;
      Gauge1.Progress:= i;
      Application.ProcessMessages;
      Inc(I);
    end;
    XL.Range[XL.Cells[1, 1], XL.Cells[StringGrid1.RowCount, StringGrid1.ColCount]].Value := ArrV;
//    XL.Selection.Columns.AutoFit;

    XL.DisplayAlerts := False;
    XL.Visible:= True;
  finally
    Application.ProcessMessages;
    Screen     .Cursor  := crDefault;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  XL,WorkBook: Variant;
  i, j : integer;
begin
  Screen.Cursor:= crHourGlass;
  try
    XL:= CreateOleObject('Excel.Application');
  except
    Application.MessageBox('Excel이 설치되어 있지 않습니다. 먼저 Excel을 설치하세요.',
      '오류', MB_OK or MB_ICONERROR);
    Screen     .Cursor  := crDefault;
    Exit;
  end;

  Gauge1.MaxValue   := StringGrid1.RowCount;
  Gauge1.Progress := 1;
  Application.ProcessMessages;
  try
    WorkBook := XL.WorkBooks.Add;

    //Data import
    for i:= 0 to StringGrid1.RowCount do
    begin
      for j := 0 to StringGrid1.ColCount do
      begin
        Gauge1.Progress:= i;
        Application.ProcessMessages;
        XL.Cells[i+1, j+1].Value := StringGrid1.Cells[0, i];
      end;
    end;
//    XL.Selection.Columns.AutoFit;

    XL.DisplayAlerts := False;
    XL.Visible:= True;
  finally
    Application.ProcessMessages;
    Screen     .Cursor  := crDefault;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i,j,k : Integer;
begin
  k := 1;
  for i := 0 to StringGrid1.RowCount do
  begin
    for j := 0 to StringGrid1.ColCount do
    begin
      StringGrid1.cells[j,i] := IntToStr(k);
      Inc(k);
    end;
  end;
end;

end.





771   [일반/컴포넌트] thread-safe Queue를 이용한 TLogThread  김영대 2003/11/18 4578 1086
770   [알고리즘] 구분자(delimiter)를 사용한 문자열 파싱(parsing)  김영대 2003/11/13 4985 1091
769   [일반/컴포넌트] StrToFloatDef  김영대 2003/11/13 4772 1214
768   [알고리즘] 숫자를 KB, MB, GB 단위로 환산하기  김영대 2003/11/13 4854 1108
767   [일반/컴포넌트] thread-safe Queue 구현  김영대 2003/08/18 5574 1153
766   [COM/OLE] 기존 Excel 문서 불러와서 편집후 저장하기  김영대 2003/04/18 5150 1236
765   [일반/컴포넌트] C에서 한글자르기  공성환 2003/04/16 4609 908
  [COM/OLE] 그리드 자료 엑셀로 좀더 빠르게 보내기  공성환 2003/04/16 5276 916
763   [윈도우즈 API] 폼이 Minimized 되었을때 깜박이게 하기 2  김영대 2003/04/14 5540 1256
762   [일반/컴포넌트] 키보드의 Shift+Tab 이 눌린것처럼 처리하기  김영대 2003/04/14 4563 1261
761   [윈도우즈 API] 콤포넌트의 Hint 에 그림(Bitmap) 넣기  김영대 2003/04/11 4980 1295
760   [윈도우즈 API] 콤포넌트에 풍선 도움말 달기  김영대 2003/04/11 5594 1310
759   [윈도우즈 API] TScrollBox 안에 Animation으로 Form 띄우기  김영대 2003/04/11 4466 1252
758   [일반/컴포넌트] 동적으로 프로젝트의 Main form 바꾸기  김영대 2003/04/11 4662 1142
757   [시스템] 파일 복사하면서 진행상태와 남은 시간 표시하기  김영대 2003/04/10 5861 1201
756   [시스템] 실행중인 모든 프로그램의 실행파일명 구하고 검색하기  김영대 2003/04/10 5505 1222
755   [시스템] 파일(들)을 클립보드로 복사하여 탐색기에서 붙여넣기 하기  김영대 2003/04/10 5278 1350
754   [일반/컴포넌트] GIF 이미지의 width/height 구하기  김영대 2003/04/10 4457 1195
753   [윈도우즈 API] 4가지 윈도우즈 관련 폴더의 path 구하기  김영대 2003/04/08 5640 1274
752   [일반/컴포넌트] Thread in a Timer  김영대 2003/04/07 6742 1068
751   [알고리즘] 주어진 구분자(들)로 분리된 토큰(token)문자열 구하기  김영대 2003/04/02 4501 1028
750   [일반/컴포넌트] Form의 Caption 에서의 Click 알아내기  김영대 2003/04/01 4000 998
749   [윈도우즈 API] 키보드 입력 로케일(Locale) 구하기  김영대 2003/04/01 4089 1008
748   [윈도우즈 API] "내 컴퓨터"에 있는 폴더들의 디렉토리 구하기  김영대 2003/04/01 5121 1466
747   [윈도우즈 API] 네트워크 환경의 "컴퓨터 찾아보기" 화면 띄우기  김영대 2003/04/01 4957 1146
746   [알고리즘] Huffman 압축 알고리즘  김영대 2003/04/01 4512 1206
745   [일반/컴포넌트] Windows의 사용자이름, 작업그룹 구하기  김영대 2003/04/01 4732 1169
744   [일반/컴포넌트] ComboBox에 IE의 URL 입력창 같은 근접검색 두기  김영대 2003/03/31 4454 1110
743   [윈도우즈 API] RichEdit에서 URL을 HyperLink 로 표시하기  김영대 2003/03/31 5265 1238
742   [일반/컴포넌트] 이미지를 마우스로 drag시 테두리 효과를 주면서 이동 시키기  김영대 2003/03/31 5030 1150
741   [일반/컴포넌트] PageControl의 TabSheet 마다 PopupMenu 두기  김영대 2003/03/31 5030 1199
740   [일반/컴포넌트] Delphi의 Tokenizer TParser 사용 예제  김영대 2003/03/31 4615 1210
739   [일반/컴포넌트] 네트워크 컴퓨터의 레지스트리 접근하기  김영대 2003/03/31 4204 1059
738   [네트웍/인터넷] 윈도우즈 네트워크로 메시지 보내기  김영대 2003/03/30 5147 1150
737   [네트웍/인터넷] IP로 이름 구하기 또는 이름으로 IP 구하기  김영대 2003/03/30 4771 1237
736   [일반/컴포넌트] IE "시작 페이지" 읽어오고 바꾸기  김영대 2003/03/30 5648 1370
735   [일반/컴포넌트] URL encoding 하기  김영대 2003/03/30 4442 1142
734   [일반/컴포넌트] URL 을 각 part로 분리하기  김영대 2003/03/30 4778 1224
733   [일반/컴포넌트] 기본 SMTP 서버와 계정 알아내기  김영대 2003/03/30 4345 1085
732   [일반/컴포넌트] Microsoft Internet Explorer의 버전 번호  김영대 2003/03/30 4183 1079

[1][2][3][4][5] 6 [7][8][9][10]..[25] [다음 10개]
 

Copyright 1999-2019 Zeroboard / skin by zero