Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
스트링그리드에서 excel로 저장 정말 궁금
전 delphi로 주로 db그리두만 이용해오다가
이번에 스트링 그리드를 쓰려하는데
excel로 저장하는 방법(컴포넌트를 이용하든지, 아니면 ole를 이용하든지)
을 알고 싶네요...
정말 잘 알고 있는분 저에게 한수 부탁 드립니다..
이왕이면 자세하게...
가르쳐 주신분은 아마 복많이 받으 실꺼예요,,,
그럼 20000...
2
COMMENTS
류성호
•
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;
0
0
삭제
수정
댓글
franco97
•
1999.06.22 22:43
스트링그리드의 한필드에 문자타입의 10자리 코드가 (ex: 0000012345,0000078901,...) 들어있습니다..
그런데 이걸 엑셀로 보내면(한글오피스97버젼) 0000012345 -> 12345, 0000078901 -> 78901 이렇게
변환되어 자리를 지키고 있더라구요.. 참 기가막혀서...
엑셀이 너무 똑똑하여 Default로 문자코드를 숫자만 있다고 숫자로 바꾸어 버리는 이런 현상을 막을 수는
없는지요.. 정말 답답하더라구요... 그럼...
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
bds
•
1999.06.22 23:47
1
COMMENTS
/
0
LIKES
입력할때 에러메세지2
유수
•
1999.06.23 00:36
키필드에 값이 지정되지 않아서 나는 에러입니다. 해당 테이블의 프라이머리 키필드는 반드시 값이 지...
ppyp
1999.06.22 23:13
0
COMMENTS
/
0
LIKES
quick report 3.0.4 에 대해서...
bds
•
1999.06.22 21:08
1
COMMENTS
/
0
LIKES
입력할때 에러메세지
최석기
•
1999.06.22 21:30
bds 께서 말씀하시기를... > 무더운 여름에 고생많으십니다. > DBMemo로 입력하려고 합니다. > DBMemo...
권순종
1999.06.22 21:02
0
COMMENTS
/
0
LIKES
네트워크에서 객체 전송 ?
franco97
1999.06.22 20:46
0
COMMENTS
/
0
LIKES
[Q]oracle 에서 sql 오류결과를 보여주려고 하는데..
장일형
1999.06.22 20:28
0
COMMENTS
/
0
LIKES
OLE자동화기법에 대해서 알려주세요
손용석
1999.06.22 19:58
0
COMMENTS
/
0
LIKES
델파이 한글 도움말(파일)을 구합니다...!!
배재민
•
1999.06.22 19:36
2
COMMENTS
/
0
LIKES
인스톨 쉴드가 MS-ACCESS를 만날때...
김경수
•
1999.06.22 19:57
안녕하세요. 저도 그런적이 있었거든요. 근데 실제 설치할 컴퓨터(저같은경우 win95)에 access가 설치되...
진은정
•
1999.06.22 19:54
InstallSheild인지 BDE인지, 하여간 DAO랑 잘 어울리질 못하더군요, 저도 이것때문에 무척 고생을 했...
강동연
•
1999.06.22 19:29
1
COMMENTS
/
0
LIKES
(질문)제발 좀 알려주세요. 코드 어디가 잘못되었는지..
섭
•
1999.06.22 20:13
강동연 께서 말씀하시기를... > 고수님들 부탁드립니다. > > 테이블 리스트의 내용을 파일에 저장할때 ...
김석태
1999.06.22 19:17
0
COMMENTS
/
0
LIKES
install 한후, 컴포넌트가 이름과 달라요...
북해
1999.06.22 18:29
0
COMMENTS
/
0
LIKES
TEdit에서 특정문자의 색깔을 바꾸려면...
서현승
1999.06.22 18:08
0
COMMENTS
/
0
LIKES
영대님이 만든 Query의 자료를 Excel
이소라
1999.06.22 16:42
0
COMMENTS
/
0
LIKES
OLE이 없이 MSWord 사용하기?
한승협
•
1999.06.22 13:57
1
COMMENTS
/
0
LIKES
DBComboBox 에 아이템이 저절로 들어가나요?
섭
•
1999.06.22 20:26
한승협 께서 말씀하시기를... > 안냐세여.. 초보델파이언임다. > > 저는 DBComboBox에 DataSource와 Da...
PETER
1999.06.22 08:06
0
COMMENTS
/
0
LIKES
Record filtering이 안되요.....
김영규
•
1999.06.22 07:27
2
COMMENTS
/
0
LIKES
dbgrid에서 임시적인 column생성 후 editing
신호성
•
1999.06.22 21:43
김영규 께서 말씀하시기를... > Query 콤포넌트와 DBGrid콤포넌트를 사용하여 > 자료를 조회한 후 ( SQL...
류동균
•
1999.06.22 08:08
김영규 께서 말씀하시기를... > Query 콤포넌트와 DBGrid콤포넌트를 사용하여 > 자료를 조회한 후 ( SQL...
조성윤
•
1999.06.22 07:11
1
COMMENTS
/
0
LIKES
DBcombobox와 DBlistbox에 대하여...
류동균
•
1999.06.22 08:19
조성윤 께서 말씀하시기를... > 또 질문 하게 되는군요 > items속성의 값을 테이블의 특정 필드에 값을 ...
홍희석
•
1999.06.22 04:57
2
COMMENTS
/
0
LIKES
스트링그리드에서 excel로 저장 정말 궁금
전 delphi로 주로 db그리두만 이용해오다가 이번에 스트링 그리드를 쓰려하는데 excel로 저장하는 방법(컴포넌트를 이용하든지, 아니면 ole를 이용하든지) 을 알고 싶네요... 정말 잘 알고 있는분 저에게 한수 부탁 드립니다.. 이왕이면 ...
류성호
•
1999.06.22 05:24
홍희석 께서 말씀하시기를... > 전 delphi로 주로 db그리두만 이용해오다가 > 이번에 스트링 그리드를 쓰...
franco97
•
1999.06.22 22:43
스트링그리드의 한필드에 문자타입의 10자리 코드가 (ex: 0000012345,0000078901,...) 들어있습니다.. ...
진은정
1999.06.22 04:46
0
COMMENTS
/
0
LIKES
[Q]DBGrid의 pickList에서 선택된 값을 알아내려면?
이용민
•
1999.06.22 04:29
1
COMMENTS
/
0
LIKES
변수에 관한 보편적 궁금증..`
이정욱
•
1999.06.22 07:54
이용민 께서 말씀하시기를... > 안녕하세요. (주) 천의무봉의 이용민입니다. > > 1. 변수를 초기화 해...
홍희석
1999/06/22 04:57
Views
195
Likes
0
Comments
2
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 전 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;