Q&A

  • 일반적으로 Excel 파일 오픈하려면 어떻게 하나요.
델파이에서 보통 다른 DB open처럼 Excel 파일을 DBGrid에 열어보려면 어떻게 하나요?
어떤 컴포넌트를 어떻게 사용하면 되는 것인지...
[팁]에 있는대로 ADOQuery를 사용해보니 '설치가능한 ISAM을 찾을 수 없음'이라고 나옵니다.
작업환경은 XP, Exceldms 2002 버전입니다.
1  COMMENTS
  • Profile
    바다사랑 2004.06.26 00:05

    DbGrid로도되지만 설정값이 많구...
    스트링 그리드가 간편하지 싶네요,,,

    procedure TForm1.ExcelToGrid(sFile : String; sGrid : TStringGrid;sCol:Integer);
    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;
            ExcelBook   :=  ExcelApp.WorkBooks.Open(sFile);
            ExcelBook   :=  ExcelApp.WorkBooks.item[1];
            ExcelSheet  :=  ExcelBook.Worksheets.Item[1];

       //StringGrid 초기화 (Title은 고려하지 않았습니다.)
            sGrid.RowCount  :=  ExcelSheet.UsedRange.Rows.count;
            sGrid.ColCount  :=  sCol;

            For  i  :=  1   to  ExcelSheet.UsedRange.Rows.count   do
                 For J := 1 to  sCol  do
                      sGrid.Cells[j-1,i-1] := VarToStr(ExcelSheet.Cells[i,j]);  //스트링그리드에 뿌리기

            ExcelApp.WorkBooks.Close;
            ExcelApp.quit;
            ExcelApp := unassigned;
        Except
          on err : exception do  begin
              ExcelApp.WorkBooks.Close;
              ExcelApp.quit;
              ExcelApp := unassigned;
              ShowMessage('작업이 취소되었습니다. Data확인요망-'+err.message);
          end;
        end;
        sGrid.FixedRows  := 1;
        ShowMessage(IntToStr(sGrid.RowCount) + '건의 자료를 변환하였습니다');
    End;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
        ExcelToGrid(Edit1.Text,StringGrid1,20);
    end;