Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
DB와 엑셀
델파이에서 오라클 데이타를 읽습니다.
그 데이타를 엑셀로 옮겨야 하거든요.
방법을 알려 주세요.
서버 컴포넌트를 사용하려고 했는데
DBGrid에 일단 데이타를 출력한 후에 그 데이타를 엑셀로 옮기려고 했더니 데이터가 맨 윗 줄만 오고 있습니다. 방법을 알려 주세요.
더 좋은 방법이 있으면 그것을 알려 주세요.
테이블을 연결하면 될 것 같은데 쉽지가 않네요.
1
COMMENTS
coolling
•
2000.11.01 06:29
좋은 밤입니다..
근데 서버 컴포넌트가 뭔가요..??
저도 이제 막 델을 시작하는 관계로 모른게 많습니다만....
어쩨든....엑셀로 데이터를 옮기는데는 query와 table 모두 가능합니다..
제 경험상...저같은 경우에는 여기 저기서 소스를 가져다 붙여 함수를 만들어 놓고
사용합니다....
소스는 다음과 같구요...unit만을 하나 만들어서 사용하시면, 편해요..
아래 소스는 Query를 엑셀로 옮기는 거구요... TQuery파라메터 대신에 TTable을 사용하면, table도 가능하겠죠..
제사한 설명은 검색을 잘해보시면, 찾을 수 있을겁니다..저도 검색을 통해서
배운 거니까요..
그럼 즐푸하세요..
==================================================================================
Function Query_To_Excel( Var Qry_Name : TQuery ; Sheet_Name , File_Name : String ; Column_Title : TStringList ):Integer;
// 특정 데이타를 EXCEL로 보낸다
Var
WinHandle : Thandle;
XLApp , Sheet , ColumnRange: Variant;
nCount , nCont ,FieldCnt , j , i , k , SheetCnt : Integer;
s_Excel_Data : String;
s_Ascii : String;
begin
If Qry_Name.Active = False Then Begin
Application.MessageBox ( '연결된 데이타가 없습니다.' , '확인' , MB_OK ) ;
Result := 0;
Exit;
End;
Try
XLApp := CreateOLEObject ( 'Excel.Application') ;
Except
Application.MessageBox ( '엑셀을 열 수 없습니다' + chr(13) +
'엑셀이 설치되어있는지 확인하십시요' , '알림' , MB_OK ) ;
Result := 0;
Exit;
End; //try 문의 끝
XLApp.Visible := False;
// XLApp.Visible := True ;
Try
// SetForegroundWindow( WinHandle );
XLApp.WorkBooks.Add ; //엑셀에 workbook을 1개 추가한다.
//저장할때 저장 여부 확인
XLApp.DisplayAlerts := False;
Qry_name.DisableControls ;
sheetcnt := XLApp.workbooks.count ;
XLApp.Workbooks[sheetcnt].WorkSheets[1].Name := sheet_name ;
Sheet := XLApp.WorkBooks[sheetcnt].WorkSheets[sheet_name] ;
ColumnRange := XLApp.Workbooks[sheetcnt].WorkSheets[sheet_name].Columns ;
For i := 1 To Qry_Name.FieldCount do Begin
ColumnRange.Columns[i].Style.NumberFormatLocal := '@' ;
// 이부분이 문자열로 인식하게 하는 부분입니다.
End ;//for문의 끝
Fieldcnt := 0 ;
//Column Title 출력
For j := 0 to Column_Title.Count -1 Do Begin
Fieldcnt := j + 1;
Sheet.Cells[2, FieldCnt] := Column_Title.Strings[j] ;
End;
Qry_name.first ;
nCount := 4 ;
// 실제 데이타 출력
While Not( Qry_name.Eof ) Do Begin
For i := 0 To Qry_Name.Fields.Count - 1 Do Begin
nCont := i + 1 ;
If (Qry_name.Fields[i].Value = NULL) Then Begin
s_Excel_Data := '';
End Else Begin
s_Excel_Data := Qry_name.fields[i].Value ;
End;
Sheet.Cells[nCount , nCont] := (s_excel_data);
End ;
Qry_Name.Next ;
Inc(nCount) ;
End ;
Qry_Name.EnableControls ;
Qry_name.first ;
Except
Application.MessageBox ( '서버와의 연결에 실패했거나 데이타베이스와의 연결문제가 발생했습니다' ,'확인' ,MB_OK ) ;
Result := 0;
Exit ;
End ;
For k := 1 to (qry_name.FieldCount) Do Begin
s_Ascii := Chr(k + 64) ;
ColumnRange.Columns[s_Ascii+':'+s_Ascii].EntireColumn.AutoFit ;
End;
XLApp.ActiveWorkBook.SaveAs(File_Name);
If not VarIsEmpty(XLApp) Then Begin
XLApp.Quit;
End;
Result := 1;
End;
==================================================================================
초보 wrote:
> 델파이에서 오라클 데이타를 읽습니다.
> 그 데이타를 엑셀로 옮겨야 하거든요.
> 방법을 알려 주세요.
> 서버 컴포넌트를 사용하려고 했는데
> DBGrid에 일단 데이타를 출력한 후에 그 데이타를 엑셀로 옮기려고 했더니 데이터가 맨 윗 줄만 오고 있습니다. 방법을 알려 주세요.
> 더 좋은 방법이 있으면 그것을 알려 주세요.
> 테이블을 연결하면 될 것 같은데 쉽지가 않네요.같은데 쉽지가 않네요.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
castle road
•
2000.11.01 04:05
1
COMMENTS
/
0
LIKES
about mdichild form close...
한하눌
•
2000.11.01 04:56
castle road wrote: > mdichild form 을 닫을 때 action := cafree;를 폼 close 이벤트에 넣으면 되더라구...
초보궁금
•
2000.11.01 03:27
2
COMMENTS
/
0
LIKES
F1BOOK에 데이타를 넣는데 MAXROW=16384로 되어있던데
한하눌
•
2000.11.01 04:44
초보궁금 wrote: > 일단 16384이상의 Row를 생성하려하면 에러가 나더군요.. > 데이타는 훨씬더 많이 남...
초보궁금
•
2000.11.01 21:44
> 엑셀에서는 30-40만건이 저장이 되나요? > 차라리 구분자를 두고 text화일로 저장한뒤에 처리해보시면 ...
고재용
2000.11.01 02:36
0
COMMENTS
/
0
LIKES
openGl사용법
초보
•
2000.11.01 02:32
1
COMMENTS
/
0
LIKES
ini화일 값 불러오기
기타맨
•
2000.11.01 02:45
verinfo := syscomm.ReadString('Version',vList[0],''); 이부분을 고치면 될거 같아요.. vList[0]을 v...
토토
•
2000.11.01 02:32
1
COMMENTS
/
0
LIKES
jpg화일을 넷웍으로 연결된 다른컴퓨터로 특정디렉토리에복사
모승열
•
2000.11.01 18:48
토토 wrote: > 제목그대로인데요.... > 어떤 디렉토리안에 jpg화일여러개가 있습니다. > 여기까지는(읽...
초보
•
•
2000.11.01 02:05
1
COMMENTS
/
1
LIKES
DB와 엑셀
델파이에서 오라클 데이타를 읽습니다. 그 데이타를 엑셀로 옮겨야 하거든요. 방법을 알려 주세요. 서버 컴포넌트를 사용하려고 했는데 DBGrid에 일단 데이타를 출력한 후에 그 데이타를 엑셀로 옮기려고 했더니 데이터가 맨 윗 줄만 오고...
coolling
•
2000.11.01 06:29
좋은 밤입니다.. 근데 서버 컴포넌트가 뭔가요..?? 저도 이제 막 델을 시작하는 관계로 모른게 많습니다...
김미니
•
2000.11.01 01:56
1
COMMENTS
/
0
LIKES
스트링그리드에 관해서.... 급해요
한하눌
•
2000.11.01 04:53
김미니 wrote: > 안녕하세요. > > 스트링그리드에서 셀에 data를 직접 입력 하려고 하거든요.... > db...
초보
2000.11.01 02:48
0
COMMENTS
/
0
LIKES
잘 모르겠습니다.
초보
•
2000.11.01 01:47
1
COMMENTS
/
0
LIKES
ini화일 값 불러오기
제2의 관리자
•
2000.11.01 01:52
같은 내용을 여러번 계속 올리시면 삭제 할껄
권경숙
2000.11.01 01:40
0
COMMENTS
/
0
LIKES
[S.O.S급해요!!] QuickReport에서 고정되지않은 column, row 갯수..
초보왕
•
2000.11.01 01:37
1
COMMENTS
/
0
LIKES
쉬운거일거에염....
bassmania
•
2000.11.01 02:56
초보왕 wrote: > > 저기...'where PROG = :pProg' 에서 이게 무슨뜻인가여? > > where는 조건을 찾...
장태주
•
2000.11.01 01:19
1
COMMENTS
/
0
LIKES
도스 프로그램을 실행시키고 화면출력 받기
기타맨
•
2000.11.01 02:49
저두 전에 한번 고생한적이 있는데 이곳에서 답을 얻어 잘해결되었습니다. 델파이 팁모아를 클릭한다음 Se...
김미니
•
2000.11.01 00:52
1
COMMENTS
/
0
LIKES
스트링그리드 질문입니다 -초보가-
배준상
•
2000.11.01 01:56
김미니 wrote: > 안녕하세요. > > 스트링그리드에서 셀에 data를 직접 입력 하려고 하거든요.... > db...
한승구
•
2000.11.01 00:46
1
COMMENTS
/
0
LIKES
*.Wav 의 연주 시간을 알수 있나요?
Jinney
•
2001.01.12 03:01
Wave 전체 시간 inttostr(round(MediaPlayer.ControlInterface.SelectionEnd)); 현재 시간 inttostr(r...
cico
•
2000.11.01 00:45
2
COMMENTS
/
0
LIKES
treeview를 하고파요
기타맨
•
2000.11.01 02:54
팁에서 간단한 예제 골랐어요. procedure TForm1.Button1Click(Sender: TObject); var MyTreeNode1,...
cico
•
2000.11.01 03:30
감사합니다. 근데요!~ 만약 내컴의 c드라이브의 내용을 트리뷰로 나타낸다면 어케하지요? 물론 다이얼로...
초보자
2000.11.01 00:44
0
COMMENTS
/
0
LIKES
부탁드려요! 델파이와 리눅스를 잘 아시는 분!
김인수
2000.11.01 00:04
0
COMMENTS
/
0
LIKES
ActiveX 폼에 ADO를 사용해서 외부에서 작업하려면..
박병희
•
2000.10.31 23:55
1
COMMENTS
/
0
LIKES
cannot perform this operation on a closed database
s6763
•
2000.11.02 08:59
박병희 wrote: > db는 오라클이구요. > database1.query1.starttransaction이나 > query1.execsql같은 ...
won
2000.10.31 23:21
0
COMMENTS
/
0
LIKES
인터베이스 .. 그래도 (저장프로시저) 가 안됩니다.!!
이문환
•
2000.10.31 22:52
4
COMMENTS
/
0
LIKES
델파이 스탠다드,프로,엔터프라이즈 차이 아시는 분,...
한하눌
•
2000.11.01 00:38
이문환 wrote: > 델파이 스탠다드와 프로페셔널, 엔터프라이즈 3종류의 차이점을 > 알고 싶습니다. > ...
이문환
•
2000.11.01 04:32
답변에 정말 감사드립니다. 스탠다드 버젼으로도 데이터베이스 프로그램을 할 수 있나여? 답변을 정말 고...
이문환
•
2000.11.01 17:12
제가 궁금했던 사항들을 링크시켰습니다. http://www.inprise.co.kr/delphi/productinfo/featurelist...
한하눌
•
2000.11.01 00:34
이문환 wrote: > 델파이 스탠다드와 프로페셔널, 엔터프라이즈 3종류의 차이점을 > 알고 싶습니다. > ...
초보
2000/11/01 02:05
Views
274
Likes
1
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
근데 서버 컴포넌트가 뭔가요..??
저도 이제 막 델을 시작하는 관계로 모른게 많습니다만....
어쩨든....엑셀로 데이터를 옮기는데는 query와 table 모두 가능합니다..
제 경험상...저같은 경우에는 여기 저기서 소스를 가져다 붙여 함수를 만들어 놓고
사용합니다....
소스는 다음과 같구요...unit만을 하나 만들어서 사용하시면, 편해요..
아래 소스는 Query를 엑셀로 옮기는 거구요... TQuery파라메터 대신에 TTable을 사용하면, table도 가능하겠죠..
제사한 설명은 검색을 잘해보시면, 찾을 수 있을겁니다..저도 검색을 통해서
배운 거니까요..
그럼 즐푸하세요..
==================================================================================
Function Query_To_Excel( Var Qry_Name : TQuery ; Sheet_Name , File_Name : String ; Column_Title : TStringList ):Integer;
// 특정 데이타를 EXCEL로 보낸다
Var
WinHandle : Thandle;
XLApp , Sheet , ColumnRange: Variant;
nCount , nCont ,FieldCnt , j , i , k , SheetCnt : Integer;
s_Excel_Data : String;
s_Ascii : String;
begin
If Qry_Name.Active = False Then Begin
Application.MessageBox ( '연결된 데이타가 없습니다.' , '확인' , MB_OK ) ;
Result := 0;
Exit;
End;
Try
XLApp := CreateOLEObject ( 'Excel.Application') ;
Except
Application.MessageBox ( '엑셀을 열 수 없습니다' + chr(13) +
'엑셀이 설치되어있는지 확인하십시요' , '알림' , MB_OK ) ;
Result := 0;
Exit;
End; //try 문의 끝
XLApp.Visible := False;
// XLApp.Visible := True ;
Try
// SetForegroundWindow( WinHandle );
XLApp.WorkBooks.Add ; //엑셀에 workbook을 1개 추가한다.
//저장할때 저장 여부 확인
XLApp.DisplayAlerts := False;
Qry_name.DisableControls ;
sheetcnt := XLApp.workbooks.count ;
XLApp.Workbooks[sheetcnt].WorkSheets[1].Name := sheet_name ;
Sheet := XLApp.WorkBooks[sheetcnt].WorkSheets[sheet_name] ;
ColumnRange := XLApp.Workbooks[sheetcnt].WorkSheets[sheet_name].Columns ;
For i := 1 To Qry_Name.FieldCount do Begin
ColumnRange.Columns[i].Style.NumberFormatLocal := '@' ;
// 이부분이 문자열로 인식하게 하는 부분입니다.
End ;//for문의 끝
Fieldcnt := 0 ;
//Column Title 출력
For j := 0 to Column_Title.Count -1 Do Begin
Fieldcnt := j + 1;
Sheet.Cells[2, FieldCnt] := Column_Title.Strings[j] ;
End;
Qry_name.first ;
nCount := 4 ;
// 실제 데이타 출력
While Not( Qry_name.Eof ) Do Begin
For i := 0 To Qry_Name.Fields.Count - 1 Do Begin
nCont := i + 1 ;
If (Qry_name.Fields[i].Value = NULL) Then Begin
s_Excel_Data := '';
End Else Begin
s_Excel_Data := Qry_name.fields[i].Value ;
End;
Sheet.Cells[nCount , nCont] := (s_excel_data);
End ;
Qry_Name.Next ;
Inc(nCount) ;
End ;
Qry_Name.EnableControls ;
Qry_name.first ;
Except
Application.MessageBox ( '서버와의 연결에 실패했거나 데이타베이스와의 연결문제가 발생했습니다' ,'확인' ,MB_OK ) ;
Result := 0;
Exit ;
End ;
For k := 1 to (qry_name.FieldCount) Do Begin
s_Ascii := Chr(k + 64) ;
ColumnRange.Columns[s_Ascii+':'+s_Ascii].EntireColumn.AutoFit ;
End;
XLApp.ActiveWorkBook.SaveAs(File_Name);
If not VarIsEmpty(XLApp) Then Begin
XLApp.Quit;
End;
Result := 1;
End;
==================================================================================
초보 wrote:
> 델파이에서 오라클 데이타를 읽습니다.
> 그 데이타를 엑셀로 옮겨야 하거든요.
> 방법을 알려 주세요.
> 서버 컴포넌트를 사용하려고 했는데
> DBGrid에 일단 데이타를 출력한 후에 그 데이타를 엑셀로 옮기려고 했더니 데이터가 맨 윗 줄만 오고 있습니다. 방법을 알려 주세요.
> 더 좋은 방법이 있으면 그것을 알려 주세요.
> 테이블을 연결하면 될 것 같은데 쉽지가 않네요.같은데 쉽지가 않네요.