아래와 같이 고수님들이 주신 소스로 엑셀을 출력하고 있습니다.
adoquery와 datasource와 dbgrid를 연결해서 사용하고 있는데,
사원번호라는 필드에는 00011 이라는 값이 들어있는데,
엑셀에서 11 만 표시되거든요.
이것에 대해서 조언을 구합니다.
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;
00011 이라고 넣으면 숫자형으로 인식하기 때문에 그렇습니다...
'00011 이라고 하면 문자형으로 인식 해서 00011 으로 보여질겁니다..