Q&A

  • DB를 엑셀로 보낼때 이전에있는 workBook으로...
안녕하세요.

항상 이곳에서 도움을 많이 받고 있는 초보 델퐁입니다.

이번엔 DB에서 엑셀로 데이터를 보내야 하는데..

그냥 새로운 WorkBook을 생성하고 WorkSheet를 생성해서 대이터를 보내고 종료하는 것은 여기에 올라온 내용들을 보고 하니까 잘되는데요..

문제는 미리 만들어진 WorkSheet의 폼안에 데이터를 삽입해야한다는겁니다. 데이터를 보낼때 항상 새로운 workbook을 생성해서 사용하는게 아니라 한개의 workbook안에 하루에 한개씩 한달동안 30개의 worksheet를 생성해야 하거든요.

그렇게 할려면 기존에 생성된 workbook을 열어서 worksheet만 한개 추가 생성해서 데이터를 보내야 하는데... 어떻게 구현해야 하는지....쩝

미리 workSheet를 30개를 만들어놓고 원하는 workSheet를 열어서 데이터를 삽입해도 되걸랑요. 그러면 원하는 workSheet를 열수만 있어도 될것같은데..

참 저장할때도 무조건 SaveAs를 써야하나요. Save는 에러가 나던데...

여기에 있는 Q&A를 다뒤져 봤는데 전 제가원하던걸 찾지 못했습니다. 고수님들의 조언을

다시한번 부탁드립니다.

간단한 예제라도 올려주시면 정말 감사히! 요긴하게! 사용하겠습니다.

참고로 제가 지금까지 구현했던 소스를 올립니다. 당연히 제가 원하던건 아니지만...





//테이블 열기

procedure TForm1.Button1Click(Sender: TObject);

begin

Table1.Open;

end;





//엑셀 생성

procedure TForm1.Button2Click(Sender: TObject);

begin

Try

ExcelApplication1.Connect;

except

MessageDlg('엑셀과 연결되지 않았습니다',mtError,[mbOk],0);

Abort;

end;



Try

ExcelApplication1.Visible[0] := True;

ExcelApplication1.Caption := '델파이에서 엑셀 테스트';



//WorkBook을 추가하는 걸루 아는데 요걸 Open으로 하면 희한할텐데....

ExcelApplication1.Workbooks.Add(xlWbatworksheet,0);

ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Item[1]);

ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Sheets[1] as _WorkSheet);

except

on E: Exception do

begin

Showmessage(E.Message);

ExcelApplication1.Disconnect;

end;

end;

end;





//DB에서 엑셀로 보내기

procedure TForm1.Button3Click(Sender: TObject);

var

i,J: Integer;

MyRange: Range;

begin

Try

With ExcelWorkSheet1 do

begin

for i := 1 to Table1.FieldCount do

Cells.Item[4,i] := Table1.Fields[i-1].FullName;

Range[Cells.Item[1,1],Cells.Item[2,1]].Font.Bold := True;



Table1.First;



for i := 5 to Table1.RecordCount do

begin

for J := 1 to Table1.FieldCount do

begin

Cells.Item[i,j] := Table1.Fields[j-1].AsString;

end;

Table1.Next;

end;





//저장하기전에 자동셀 크기조정인걸로 아는데 에러가 납니다....

//이걸 주석처리하면 동작이 잘되구요

MyRange.Columns.AutoFit;



//요놈을 SaveAs말구 Save로 했슴 얼마나 조을까....

SaveAs('D:델파이5연습테스트1.Xls');



end;

except

on E: Exception do

begin

Showmessage(E.Message);

ExcelApplication1.Disconnect;

end;

end;



end;



procedure TForm1.Button4Click(Sender: TObject);

begin

ExcelApplication1.Disconnect;

ExcelApplication1.Quit;

end;



0  COMMENTS