안녕하세요~~
음..
DbGrid에 있는 자료을 엑셀로 보냈습니다..
뭐.. 다른 것들은 어케어케해서 대충 다 되었는데 한가지가 여~엉 풀리지 않아서요..
DbGrid에서는 분명 String형으로 값이 001입니다.
근데 이것이 엑셀로 넘어가면서 숫자형으로 인식하는지 1로 찍혀져 나옵니다..
엑셀에서 문자형으로 인식을 해야할텐데..
그런 함수가 있을거 같은데..
제가 잘 찾을 수가 없네요..
참고로 '001 이렇게 해서 넘기면 되긴하지만...
지금의 제 상황에는 맞는 않는 방법이라서요..
어떤 함수 같은 것이 있음 좋겠거든요..
슬기로운 고수님들의 답변을 기다리고 있겠습니다..
아~
또하나..
이건 제가 예전에 올려놓은 질문인데요..
아직 답변이 없으셔서 여기에다 붙여놓을께요.
이것두 좀 봐 주세요..
그럼 감사합니다..
아~주 기초적인거 하나마 여쭤보려합니다..
일반 오라클에서
TRUNC(112,-1) => 110 TRUNC(115,-1) => 110
ROUND(112,-1) => 110 ROUND(115,-1) => 120
됩니다..
이런걸 델파이에서 구현하고 싶은데..
함수 TRUNC, ROUND, INT는 아닌거 같구..
뭐 다른 좋~은 함수 있으면 갈켜주십시요~~
그럼 수고하세요..
var qry_name : TQuery ;
sheet_name :string);
// 특정 데이타를 EXCEL로 보낸다
var
WinHandle : Thandle;
XLApp , WordApp ,Sheet,ColumnRange: Variant ;
nCount , nCont,fieldcnt , j , i , k,sheetcnt : Integer ;
s_excel_data : String ;
s_ascii : String ;
begin
WinHandle := FindWindow( 'XLMAIN', nil );
//EXCEL의 CLASSNAME : XLMAIN ;
//현재 EXCEL이 실행되어있는가 ?
if WinHandle <> 0 then // 이미 excel이 실행되었으면
XLApp := GetActiveOLEObject('Excel.Application')
else
begin
try
XLApp := CreateOLEObject ( 'Excel.Application') ;
except
Application.MessageBox ( '엑셀을 열 수 없습니다' + chr(13) +
'엑셀이 설치되어있는지 확인하십시요' , '알림' , MB_OK ) ;
end; //try 문의 끝
XLApp.Visible := True ;
end; //if문의 끝
Try
SetForegroundWindow( WinHandle );
XLApp.WorkBooks.Add ; //엑셀에 workbook을 1개 추가한다.
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 ;
for j := 0 to gv_slst_column_title.Count -1 do
begin
fieldcnt := j + 1;
Sheet.Cells[1, fieldcnt] := gv_slst_column_title.Strings[j] ;
end ;
qry_name.first ;
nCount := 2 ;
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 ;
Except
Application.MessageBox ( '서버와의 연결에 실패했거나 데이타베이스와의 연결문제가 발생했습니다'
,'알림' ,MB_OK ) ;
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;
end;
즐거운 프로그래밍하세요..
김지현 wrote:
> 안녕하세요~~
>
> 음..
> DbGrid에 있는 자료을 엑셀로 보냈습니다..
> 뭐.. 다른 것들은 어케어케해서 대충 다 되었는데 한가지가 여~엉 풀리지 않아서요..
> DbGrid에서는 분명 String형으로 값이 001입니다.
> 근데 이것이 엑셀로 넘어가면서 숫자형으로 인식하는지 1로 찍혀져 나옵니다..
>
> 엑셀에서 문자형으로 인식을 해야할텐데..
> 그런 함수가 있을거 같은데..
> 제가 잘 찾을 수가 없네요..
> 참고로 '001 이렇게 해서 넘기면 되긴하지만...
> 지금의 제 상황에는 맞는 않는 방법이라서요..
> 어떤 함수 같은 것이 있음 좋겠거든요..
>
> 슬기로운 고수님들의 답변을 기다리고 있겠습니다..
> 아~
>
> 또하나..
> 이건 제가 예전에 올려놓은 질문인데요..
> 아직 답변이 없으셔서 여기에다 붙여놓을께요.
> 이것두 좀 봐 주세요..
> 그럼 감사합니다..
>
> 아~주 기초적인거 하나마 여쭤보려합니다..
>
> 일반 오라클에서
> TRUNC(112,-1) => 110 TRUNC(115,-1) => 110
> ROUND(112,-1) => 110 ROUND(115,-1) => 120
> 됩니다..
>
> 이런걸 델파이에서 구현하고 싶은데..
> 함수 TRUNC, ROUND, INT는 아닌거 같구..
> 뭐 다른 좋~은 함수 있으면 갈켜주십시요~~
>
> 그럼 수고하세요..
>