다음과 같은 변환 프로시져를 사용했는데요....
테이블에 따라.... 오류가 발생할때가 있고... 잘될때가 있더라구요....
procedure ExcelConv(AQuery: TQuery);
var
XL, XArr, XTitle: Variant;
i, j, k: Integer;
begin
with AQuery do begin
//타이틀 처리변수
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 := True;
i := 1;
k := 1;
while i <= FieldCount 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 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['A1', CHR(64 + FieldCount) + IntToStr(k)].Select;
XL.Selection.Columns.AutoFit;
XL.Range['A1', 'A1'].Select;
First;
end;
end;
end.
에러가 날때는...
Variants unit 이 열리구... 아래 부분에 걸리네요...
.
.
.
procedure VarInvalidOp;
begin
raise EVariantInvalidOpError.Create(SInvalidVarOp);
end;
.
.
.
에러메세지는 다음과 같구요...
'Invalid variant operation' 입니다.....
이유가 멀가요?
공백을 받으면.... 에러가 나는거 같아요........
빈 필드의 값을 넘길때..... 이거 봐도...넘 어렵네요...