Q&A

  • 스트링그리드에서 excel로 저장 정말 궁금
전 delphi로 주로 db그리두만 이용해오다가

이번에 스트링 그리드를 쓰려하는데

excel로 저장하는 방법(컴포넌트를 이용하든지, 아니면 ole를 이용하든지)

을 알고 싶네요...

정말 잘 알고 있는분 저에게 한수 부탁 드립니다..

이왕이면 자세하게...



가르쳐 주신분은 아마 복많이 받으 실꺼예요,,,

그럼 20000...

2  COMMENTS
  • Profile
    류성호 1999.06.22 05:24
    홍희석 께서 말씀하시기를...

    > 전 delphi로 주로 db그리두만 이용해오다가

    > 이번에 스트링 그리드를 쓰려하는데

    > excel로 저장하는 방법(컴포넌트를 이용하든지, 아니면 ole를 이용하든지)

    > 을 알고 싶네요...

    > 정말 잘 알고 있는분 저에게 한수 부탁 드립니다..

    > 이왕이면 자세하게...

    >

    > 가르쳐 주신분은 아마 복많이 받으 실꺼예요,,,

    > 그럼 20000...



    당연한 이야기 겠지만 엑셀이 설치되어 있어야 합니다.



    아래의 예제는 Microsoft의 OLE 자동화 기술을 이용한 것이고,

    자동화 기술을 이용해서 Word, Excel, Access를 다루고 싶다면

    Microsoft에 Web사이트에 방문하시면 VB로 된 예제가

    아주 잘 나와 있습니다.



    자동화기술은 스크립 방식의 언어(VBScript)에서도 다눌수 있는 기술이므로

    VB용 예제를 보시더라도 Delphi로 싶게 다꿀 수 있을것니다.



    사이트 소개 http://cafe.hanmail.net/delphi



    <예제>



    --->

    1. StringGrid 예제





    반드시 Uses절 ComObj라고 써주어야 합니다.



    procedure TshGridX.run_excel;

    var

    XL, XArr: Variant;

    i, j: Integer;

    begin

    //데이타 처리변수

    XArr := VarArrayCreate([1, StringGrid1.ColCount], VarVariant);



    try

    //엑셀을 실행

    XL := CreateOLEObject('Excel.Application');

    except

    MessageDlg('Excel이 설치되어 있지 않습니다.', MtWarning, [mbok], 0);

    Exit;

    end;



    XL.WorkBooks.Add; //새로운 페이지 생성

    XL.Visible := True;



    for i := 0 to StringGrid1.RowCount - 1 do begin

    for j := 0 to StringGrid1.ColCount - 1 do begin

    XArr[j+1] := StringGrid1.Cells[j,i];

    end;



    //셀에 값을 넣는다.

    XL.Range['A' + IntToStr(i+1), CHR(64 + StringGrid1.ColCount) + IntToStr(i+1)].Value := XArr;



    end;



    //셀 크기 조정

    XL.Range['A1', CHR(64 + StringGrid1.ColCount) + IntToStr(i+1)].Select;

    XL.Selection.Columns.AutoFit;

    XL.Range['A1', 'A1'].Select;

    end;





    --->

    2. 데이타베이스 바이딩 예제



    procedure TMDIChild.BitBtn1Click(Sender: TObject);

    var

    XL, XArr, XTitle: Variant;

    i, j, k: Integer;

    begin

    //타이틀 처리변수

    XTitle := VarArrayCreate([1, DBModule.Query3.FieldCount], VarVariant);

    //데이타 처리변수

    XArr := VarArrayCreate([1, DBModule.Query3.FieldCount], VarVariant);



    try

    //엑셀을 실행

    XL := CreateOLEObject('Excel.Application');

    except

    MessageDlg('Excel이 설치되어 있지 않습니다.', MtWarning, [mbok], 0);

    Exit;

    end;



    XL.WorkBooks.Add; //새로운 페이지 생성

    XL.Visible := True;

    i := 1;

    k := 1;



    while i <= DBModule.Query3.FieldCount do begin

    XTitle[i] := DBModule.Query3.Fields[i-1].FieldName;

    Inc(i);

    end;

    //타이틀처리

    XL.Range['A1', CHR(64 + DBModule.Query3.FieldCount) + '1'].Value := XTitle;

    DBModule.Query3.First;



    while Not DBModule.Query3.EOF do begin

    j := 1;

    while j <= DBModule.Query3.FieldCount do begin

    if DBModule.Query3.Fields[j-1].DataType = ftString then

    XArr[j] := '''' + DBModule.Query3.Fields[j-1].Value

    else XArr[j] := DBModule.Query3.Fields[j-1].Value;

    Inc(j);

    end;

    //셀에 값을 넣는다.

    XL.Range['A' + IntToStr(k+1), CHR(64 + DBModule.Query3.FieldCount) + IntToStr(k+1)].Value := XArr;



    DBModule.Query3.Next;

    Inc(k);

    end;



    //셀 크기 조정

    XL.Range['A1', CHR(64 + DBModule.Query3.FieldCount) + IntToStr(k)].Select;

    XL.Selection.Columns.AutoFit;

    XL.Range['A1', 'A1'].Select;

    end;

  • Profile
    franco97 1999.06.22 22:43
    스트링그리드의 한필드에 문자타입의 10자리 코드가 (ex: 0000012345,0000078901,...) 들어있습니다..



    그런데 이걸 엑셀로 보내면(한글오피스97버젼) 0000012345 -> 12345, 0000078901 -> 78901 이렇게



    변환되어 자리를 지키고 있더라구요.. 참 기가막혀서...



    엑셀이 너무 똑똑하여 Default로 문자코드를 숫자만 있다고 숫자로 바꾸어 버리는 이런 현상을 막을 수는



    없는지요.. 정말 답답하더라구요... 그럼...

    • 이동화
    • 1999.04.15 08:56
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김영해
      1999.04.15 09:20
      이동화 wrote: > 안녕하세요! > 프린터에대해서 궁금한게 있습니다. 아니 지금 되지가 않습니다. > 프린...
    • 이동화
      1999.04.15 09:39
      김영해 wrote: > 이동화 wrote: > > 안녕하세요! > > 프린터에대해서 궁금한게 있습니다. 아니 지금 되...
    • 이동화
    • 1999.04.15 08:56
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김영해
      1999.04.15 09:20
      이동화 wrote: > 안녕하세요! > 프린터에대해서 궁금한게 있습니다. 아니 지금 되지가 않습니다. > 프린...
    • 이동화
      1999.04.15 09:39
      김영해 wrote: > 이동화 wrote: > > 안녕하세요! > > 프린터에대해서 궁금한게 있습니다. 아니 지금 되...
    • 김영해
    • 1999.04.15 08:49
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이소라
      1999.06.22 16:42
      OLE를 사용치 않고 MS_Word를 사용하는 소스입니다. 그런데 "선언되지 않은 정체"라는 에러 메세지만 반...
    • 이정욱
      1999.04.15 10:21
      아래 작업전환을 막는것이 있습니다. 이 코드는 나이렉스의 팁 게시판에서 가져왔습니다. var Form1:...
    • 김영해
      1999.04.17 07:48
      감사합니다.이정욱님 많은 도움이 되었습니다.
    • 1999.06.22 20:26
      한승협 께서 말씀하시기를... > 안냐세여.. 초보델파이언임다. > > 저는 DBComboBox에 DataSource와 Da...
    • 이순희
    • 1999.04.15 08:34
    • 2 COMMENTS
    • /
    • 0 LIKES
    • bluepine
      1999.04.17 01:18
      이순희 wrote: > 안녕하세요... > 테이블에 시작시간과 끝시간에 대한 두개의 필드가 있습니다. > 두개...
    • 글쎄요.
      1999.04.15 19:02
      이순희 wrote: > 안녕하세요... > 테이블에 시작시간과 끝시간에 대한 두개의 필드가 있습니다. > 두개...
    • PETER
    • 1999.06.22 08:06
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김영규
    • 1999.06.22 07:27
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 이호선
      1999.04.15 05:08
      안녕하세요.. 일반 control(예: Panel)에 이미지를 실을려하는데 어떻게해야 할지 궁금합니다. 좋은밤 ...
    • 신호성
      1999.06.22 21:43
      김영규 께서 말씀하시기를... > Query 콤포넌트와 DBGrid콤포넌트를 사용하여 > 자료를 조회한 후 ( SQL...
    • 전철호
      1999.04.20 03:56
      이호선 wrote: > 안녕하세요.. > 일반 control(예: Panel)에 이미지를 실을려하는데 > 어떻게해야 할지...
    • 류동균
      1999.06.22 08:08
      김영규 께서 말씀하시기를... > Query 콤포넌트와 DBGrid콤포넌트를 사용하여 > 자료를 조회한 후 ( SQL...
    • 안치봉
      1999.04.15 06:12
      이호선 wrote: > 안녕하세요.. > 일반 control(예: Panel)에 이미지를 실을려하는데 > 어떻게해야 할지...
    • 신인재
      1999.04.15 06:22
      안치봉 wrote: > 이호선 wrote: > > 안녕하세요.. > > 일반 control(예: Panel)에 이미지를 실을려하는...
    • 조성윤
    • 1999.06.22 07:11
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 류동균
      1999.06.22 08:19
      조성윤 께서 말씀하시기를... > 또 질문 하게 되는군요 > items속성의 값을 테이블의 특정 필드에 값을 ...
    • 이호선
    • 1999.04.15 05:08
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 전철호
      1999.04.20 03:56
      이호선 wrote: > 안녕하세요.. > 일반 control(예: Panel)에 이미지를 실을려하는데 > 어떻게해야 할지...
    • 안치봉
      1999.04.15 06:12
      이호선 wrote: > 안녕하세요.. > 일반 control(예: Panel)에 이미지를 실을려하는데 > 어떻게해야 할지...
    • 신인재
      1999.04.15 06:22
      안치봉 wrote: > 이호선 wrote: > > 안녕하세요.. > > 일반 control(예: Panel)에 이미지를 실을려하는...
    • 홍희석
    • 1999.06.22 04:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 류성호
      1999.06.22 05:24
      홍희석 께서 말씀하시기를... > 전 delphi로 주로 db그리두만 이용해오다가 > 이번에 스트링 그리드를 쓰...
    • franco97
      1999.06.22 22:43
      스트링그리드의 한필드에 문자타입의 10자리 코드가 (ex: 0000012345,0000078901,...) 들어있습니다.. ...
    • 이슬
    • 1999.04.15 03:34
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 김영해
      1999.04.17 08:00
      이슬 wrote: > 1. ParamByName과 FieldByName의 차이점이 무엇인지요? > > 2. 폼에 성별(남,여:radiobu...
    • 신호성
      1999.04.16 01:36
      > 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다. > 근데, DBGrid에...
    • 박종모
      1999.04.15 04:44
      이슬 wrote: > 1. ParamByName과 FieldByName의 차이점이 무엇인지요? > > 2. 폼에 성별(남,여:radiobu...
    • 글쎄요
      1999.04.15 05:41
      추가로 답변합니다. 2번째 건데 답변이 잘 못된 것 같아요. 가장 좋은 방법은 DBGRID 대신에 STRINGGRID...
    • 이용민
    • 1999.06.22 04:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.06.22 07:54
      이용민 께서 말씀하시기를... > 안녕하세요. (주) 천의무봉의 이용민입니다. > > 1. 변수를 초기화 해...
    • 이호선
    • 1999.06.22 02:51
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 이호선
      1999.04.15 05:08
      안녕하세요.. 일반 control(예: Panel)에 이미지를 실을려하는데 어떻게해야 할지 궁금합니다. 좋은밤 ...
    • 이정욱
      1999.06.22 07:50
      나이렉스에서 구매하실 수 있습니다. 하지만 단종품목이라 기술지원을 받지는 못합니다. 사이트는 http:/...
    • 전철호
      1999.04.20 03:56
      이호선 wrote: > 안녕하세요.. > 일반 control(예: Panel)에 이미지를 실을려하는데 > 어떻게해야 할지...
    • 안치봉
      1999.04.15 06:12
      이호선 wrote: > 안녕하세요.. > 일반 control(예: Panel)에 이미지를 실을려하는데 > 어떻게해야 할지...
    • 신인재
      1999.04.15 06:22
      안치봉 wrote: > 이호선 wrote: > > 안녕하세요.. > > 일반 control(예: Panel)에 이미지를 실을려하는...
    • 강인경
    • 1999.06.22 01:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.06.25 02:14
      강인경 께서 말씀하시기를... > 김영대님의 ActiveFtp에서 사용된 왼쪽화면의 버튼콤포넌트는 어디에서 구...
    • Faster
    • 1999.04.15 01:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 아무개
      1999.04.15 04:49
      안녕하세요? 델파이 Q&A는 최소한 노력을 하는 사람들이 배워가는 곳입니다. 문제를 내고, 답을 맞추는 ...