Q&A

  • excel file을 db화일로 변환하는 방법에 대해서..
엑셀에 저장되어 있는 데이터를 DBGrid에 뿌려 주려고 하거든요...

단순히 코딩으로 해 주어야 하는 것인지 아님 다른 방법이 있는지,

만약 단순히 코딩상으로 해야 한다면 어떻게 코딩을 해야 하는지....

정말 급하거든요 제발 여러 고수님들의 가르침이 있었으면 좋겠습니다.

부탁, 또 부탁.

날씨가 변덕이 죽 끊듯 하는데 모두 감기 조심하세용!

3  COMMENTS
  • Profile
    최석기 2000.08.23 02:21
    chobo wrote:

    > 엑셀에 저장되어 있는 데이터를 DBGrid에 뿌려 주려고 하거든요...

    > 단순히 코딩으로 해 주어야 하는 것인지 아님 다른 방법이 있는지,

    > 만약 단순히 코딩상으로 해야 한다면 어떻게 코딩을 해야 하는지....

    > 정말 급하거든요 제발 여러 고수님들의 가르침이 있었으면 좋겠습니다.

    > 부탁, 또 부탁.

    > 날씨가 변덕이 죽 끊듯 하는데 모두 감기 조심하세용!



    일단 DB 파일로 저장한다는 의미가 무엇인지요??



    단순히 엑셀 파일을 읽어서 DBGrid에 display 하는정도라면 예전에 제가 답한게 있거든요..



    다음 참고하세요.



    ADO를 사용하시면 DBGrid에 읽어들일 수 있습니다..



    다음 코딩 참고해 보세요..



    procedure TForm1.Button1Click(Sender: TObject);

    begin

    if OpenDialog1.Execute then

    with ADOQuery1 do

    begin

    close;

    ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +

    OpenDialog1.FileName + ';Extended Properties=Excel 8.0;Persist Security Info=False';

    SQL.Clear;

    if Edit1.Text <> '' then

    //원하는 레코드만큼 읽기

    SQL.Text := 'SELECT TOP ' + Edit1.Text + ' * FROM [Sheet1$]'

    else

    //전체 읽기

    SQL.Text := 'SELECT * FROM [Sheet1$]';

    open;

    end;

    end;



    검색을 생활화 ^^

  • Profile
    나현희 2000.08.23 02:49
    최석기 wrote:

    > chobo wrote:

    > > 엑셀에 저장되어 있는 데이터를 DBGrid에 뿌려 주려고 하거든요...

    > > 단순히 코딩으로 해 주어야 하는 것인지 아님 다른 방법이 있는지,

    > > 만약 단순히 코딩상으로 해야 한다면 어떻게 코딩을 해야 하는지....

    > > 정말 급하거든요 제발 여러 고수님들의 가르침이 있었으면 좋겠습니다.

    > > 부탁, 또 부탁.

    > > 날씨가 변덕이 죽 끊듯 하는데 모두 감기 조심하세용!

    >

    > 일단 DB 파일로 저장한다는 의미가 무엇인지요??

    >

    > 단순히 엑셀 파일을 읽어서 DBGrid에 display 하는정도라면 예전에 제가 답한게 있거든요..

    >

    > 다음 참고하세요.

    >

    > ADO를 사용하시면 DBGrid에 읽어들일 수 있습니다..

    >

    > 다음 코딩 참고해 보세요..

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > begin

    > if OpenDialog1.Execute then

    > with ADOQuery1 do

    > begin

    > close;

    > ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +

    > OpenDialog1.FileName + ';Extended Properties=Excel 8.0;Persist Security Info=False';

    > SQL.Clear;

    > if Edit1.Text <> '' then

    > //원하는 레코드만큼 읽기

    > SQL.Text := 'SELECT TOP ' + Edit1.Text + ' * FROM [Sheet1$]'

    > else

    > //전체 읽기

    > SQL.Text := 'SELECT * FROM [Sheet1$]';

    > open;

    > end;

    > end;

    >

    > 검색을 생활화 ^^



    근데...이거는 전체아니면, TOP부터 특정 레코드만큼만 읽잖아요.

    예를 들어 10번째 레코드부터 100개의 레코드를 읽고 싶다.

    그거 가능해요?

    델파이5.0 버그인지... 제가 작업할때, 패치는 깔아보지 않아서 ... 수정 됐는지 모르겠군요.

    엑셀 칼럼의 첫번째 만나는 셀의 데이타형에 따라 ADO 데이타 필드 속성이 결정 되던데...엑셀 타이틀로 쓰는 부분때문에 조금 애먹었습니다.

    시간이 없어서... 엑셀 데이타가 그리 크지 않은 관계로 버블소트로 그냥 읽었습니다.

    그래서 ADO 컴포넌트 사용하지 않았거든요. 원하는 기능을 완벽하게 수행할 수 없어서...

    원래부터 그런지 알고 싶군요.



  • Profile
    최석기 2000.08.23 02:49


    > 근데...이거는 전체아니면, TOP부터 특정 레코드만큼만 읽잖아요.

    > 예를 들어 10번째 레코드부터 100개의 레코드를 읽고 싶다.

    > 그거 가능해요?

    > 델파이5.0 버그인지... 제가 작업할때, 패치는 깔아보지 않아서 ... 수정 됐는지 모르겠군요.

    > 엑셀 칼럼의 첫번째 만나는 셀의 데이타형에 따라 ADO 데이타 필드 속성이 결정 되던데...엑셀 타이틀로 쓰는 부분때문에 조금 애먹었습니다.

    > 시간이 없어서... 엑셀 데이타가 그리 크지 않은 관계로 버블소트로 그냥 읽었습니다.

    > 그래서 ADO 컴포넌트 사용하지 않았거든요. 원하는 기능을 완벽하게 수행할 수 없어서...

    > 원래부터 그런지 알고 싶군요.

    >



    글쎄요 MS제품 쪽 쿼리 방법중에 그런 식으로 10~100까지 쿼리하는 방법이 있으면 여기서도 사용할 수 있을꺼 같은데..



    그리고 컬럼의 데이터 형 때문에 문제는 처음 한행을 빈 줄로 만들고 다음줄에 필드 타이틀 입력 후 3번째 줄부터 자료가 들어있는 형태이면 되는거 같던데..



    뭐 저두 ADO를 사용하지는 않아요.. 차라리 CSV 형식을 사용하도록 유도하죠..