Q&A

  • DbGrid에서 엑셀로 데이타 넘기는데요..
안녕하세요~~



음..

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는 아닌거 같구..

뭐 다른 좋~은 함수 있으면 갈켜주십시요~~



그럼 수고하세요..



1  COMMENTS
  • Profile
    김주석 1999.12.30 01:06
    procedure GP_EXCEL_DATA (form_name : TForm ;

    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는 아닌거 같구..

    > 뭐 다른 좋~은 함수 있으면 갈켜주십시요~~

    >

    > 그럼 수고하세요..

    >