블로그 이미지
훅크선장

카테고리

분류 전체보기 (362)
사진이야기 (23)
펭귄컴퓨팅 (121)
컴퓨터보안 (84)
절름발이 프로그래머 (59)
하드웨어개조 (23)
멀알려줄까 (35)
홈베이킹&홈쿠킹 (2)
잡다한것들 (15)
Total
Today
Yesterday

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

태그목록

최근에 올라온 글

정상적인 윈도우즈 운영체제에서 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;


Posted by 훅크선장
, |