ListView 내용을 Excel 파일로 변환 (띄우기)
절름발이 프로그래머/Delphi / 2009. 7. 10. 10:03
정상적인 윈도우즈 운영체제에서 Excel 이 깔려있다면,
대부분의 그리드 형태나 리스트뷰 내용을 Excel로 바로 띄워 볼 수 있다.
바로 Excel이 지원하는 형태로 저장할 수 있다는 의미이다.
일단 uses ComObj; 를 추가하여야 엑셀 컴포넌트 기능을 사용할 수 있다.
다음과 같이 한다.
procedure TForm1.BtnExcelViewClick(Sender: TObject);
var
XL, XArr: Variant;
i, j: Integer;
begin
//데이타 처리변수
XArr := VarArrayCreate([1, ListView1.Columns.Count], VarVariant);
try
//엑셀을 실행
XL := CreateOLEObject('Excel.Application');
except
MessageDlg('Excel이 설치되어 있지 않습니다.', MtWarning, [mbok], 0);
Exit;
end;
XL.WorkBooks.Add; //새로운 페이지 생성
XL.Visible := True;
// 제목 행 생성
XArr[1] := '첫번째열';
XArr[2] := '두번째열';
XArr[3] := '세번째열';
XArr[4] := '네번째열';
XArr[5] := '다섯번째열';
XL.Range['A1', CHR(64 + ListView1.Columns.Count) + IntToStr(1)].Value := XArr;
for i := 0 to ListView1.Items.Count - 1 do begin
for j := 0 to ListView1.Columns.Count - 1 do begin
if j = 0 then XArr[j+1] := ListView1.Items.Item[i].Caption
else XArr[j+1] := ListView1.Items.Item[i].SubItems[j-1];
end;
//엑셀에 값을 넣는다.
XL.Range['A' + IntToStr(i+2), CHR(64 + ListView1.Columns.Count) + IntToStr(i+2)].Value := XArr;
end;
//셀 크기 조정
XL.Range['A1', CHR(64 + ListView1.Columns.Count) + IntToStr(i+1)].Select;
XL.Selection.Columns.AutoFit;
XL.Range['A1', 'A1'].Select;
end;