Q&A

  • 엑셀자료 읽어와 오라클디비에 인서트 하고 싶습니다.
델파이 초보입니다.ㅡㅜ

엑셀화일을 읽어서 오라클 디비에 인서트 시켜야 하는데.ㅡㅜ
어떻게 해야할지 막막합니다.

검색해보긴 했느데..ㅡㅜ
무슨소린지 모르겠구ㅡ.ㅜ .....
어떤 콤포넌트를 써야할지도 모르겠구요.ㅡㅜ

도와주세요.ㅡㅜ.
1  COMMENTS
  • Profile
    Crazy™ 2008.07.24 23:13
    procedure TActiveFormX.BitBtn1Click(Sender: TObject);
    var
    ExcelApp, ExcelBook, excelSheet : Variant;
    I, J : Integer; // 순환변수
    begin
    //엑셀이 설치되었있을 경우만 가능
    try
    //엑셀을 실행
    ExcelApp := CreateOLEObject('excel.Application');
    except
    ShowMessage('excel이 설치되어 있지 않습니다!!!');
    Exit;
    end;

    Try
    excelApp.Visible := False;
    excelApp.DisplayAlerts := False;
    //엑셀 통합문서 열기
    if OpenDialog1.Execute then
    begin
    ExcelBook := excelApp.WorkBooks.Open(OpenDialog1.FileName);
    ExcelBook := excelApp.WorkBooks.item[1]; //워크 쉬트 설정
    //일단 개별문서는 sheet1으로 고정
    ExcelSheet := excelBook.Worksheets.Item[1];

    //StringGrid 초기화 (Title은 고려하지 않았습니다.)

    StringGrid1.RowCount := excelSheet.UsedRange.Rows.count;
    StringGrid1.ColCount := excelSheet.UsedRange.Columns.count;

    For I := 1 to excelSheet.UsedRange.Rows.count do
    For J := 1 to excelSheet.UsedRange.Columns.count do
    StringGrid1.Cells[J,I] := vartostr(excelSheet.Cells[I,J]); //스트링그리드에 뿌리기
    excelApp.WorkBooks.Close;
    excelApp.quit;
    excelApp := unassigned;
    end;
    Except
    on err:exception do
    begin
    excelApp.WorkBooks.Close;
    excelApp.quit;
    excelApp := unassigned;
    ShowMessage('작업이 취소되었습니다. Data확인요망-'+err.message);
    end;
    end;
    ShowMessage(IntToStr(excelSheet.UsedRange.Rows.count) + '건의 자료를 변환하였습니다');
    end;



    1.음.. 소스의 젤 윗줄 use 절에 comobj 를 추가. (엑셀 함수 및 컴퍼넌트 사용하겠다는 의미)
    2. 위 부분은 엑셀파일을 stringgrid 에 옮기는 소스인데 StringGrid1 를 화면보여주구 저장하실거면 그대로 쓰시던가 또는
    관련 그리드(dbgrid??)로 바꾸시면 될거구요
    3. 저장하실때는 오라클이면 거의 odac 사용하실테니 OraQuery 나 OraDataset 사용하시면 될겁니다.

    참고로 엑셀이 설치되어 있어야 합니다.
    또한 서버단에서 지정된 시간이나 등등 돌아가게 할때는 보통 f1book이나 ado를 사용합니다.
    엑셀을 설치하지 않게 위해서이죠.
    단지 f1book같은경우엔 엑셀버젼의 문제가 있어 호환이 다 되지 않습니다.