<!--CodeS-->
procedure TForm1.Button12Click(Sender: TObject); //엑셀로 저장
var
XL, XArr, XTitle: Variant;
i, j, k: Integer;
begin
SaveDialog1.Execute;
with DataModule3.Query1 do begin
//타이틀 처리변수
//showmessage('필드 카운트:'+intTostr(DataModule3.Query1.FieldCount));
XTitle := VarArrayCreate([1, FieldCount], VarVariant);
//데이타 처리변수
XArr := VarArrayCreate([1, FieldCount], VarVariant);
try
//엑셀을 실행
XL := CreateOLEObject('Excel.Application');
except
MessageDlg('Excel이 설치되어 있지 않습니다.', MtWarning, [mbok], 0);
Exit;
end;
XL.WorkBooks.Add; //새로운 페이지 생성
XL.Visible := False;
XL.WorkSheets[1].Cells.NumberFormatLocal := '@'; //문자형으로 저장
i := 1;
k := 1;
while i <= FieldCount-1 do begin //마지막 필드한개 엑셀저장 제외
XTitle[i] := Fields[i-1].FieldName; //필드네임
Inc(i);
end;
//타이틀처리
XL.Range['A1', CHR(64 + FieldCount)+'1'].Value := XTitle;
First;
while Not EOF do begin
j := 1;
while j <= FieldCount-1 do begin //마지막 필드한개 엑셀저장 제외
if Fields[j-1].DataType = ftString then
//실제 값을 넣는 부분
XArr[j] := Fields[j-1].Value
else
XArr[j] := Fields[j-1].Value;
Inc(j);
end;
//셀에 값을 넣는다.
XL.Range['A' + IntToStr(k+1), CHR(64 + FieldCount) + IntToStr(k+1)].value := XArr;
Next;
Inc(k);
end;
//XL.Range[XL.WorkSheets[1].Cells[1, 1], XL.WorkSheets[1].Cells[1,6]].Interior.Color := clYellow;
//셀 크기 조정
XL.Range['A1', CHR(64 + FieldCount) + IntToStr(k)].select;
XL.Selection.Columns.AutoFit;
XL.Range['A1', 'A1'].select;
First;
if (SaveDialog1.FileName <> '') then //예외 처리
begin
XL.ActiveWorkbook.saveas(SaveDialog1.FileName);
XL.ActiveWorkbook.Close;
end
else
XL.ActiveWorkbook.Close;
XL.quit;
end;
end;
<!--CodeE-->
savedialog로 파일명 입력받아 저장하는 기능은 잘됩니다.
다만 예외처리라고 써있는 부분이 잘안되네요
savedialog에서 저장을 누르지 않고 취소를 눌렀을때 저장을 하지 않고 취소해야되는데
이부분을 잘모르겠어요 좀 도와주세요ㅜ
if SaveDialog1.Execute = mrOK then // OK 버튼을 눌렀을 때...
begin
......
if (SaveDialog1.Filename ....)
...
end;