기술탐구

라자루스로 만들어 보는 비밀번호 관리 프로그램 [뭐였더라] (4) 엑셀파일 출력 I

appleii 2021. 8. 11. 11:00

SQLite 로 관리한 데이터를 애플리케이션에서 가공하여 엑셀로 출력하고 싶다. 라자루스에서는 엑셀과 비슷한 애플리케이션을 만들 수 있는 컴포넌트가 있다. 이것을 이용하여 데이터를 엑셀로 출력해 본다.

8. 컴포넌트 설치

엑셀 파일 관리를 위해서 새로운 컴포넌트를 설치해야 한다. 설치할 컴포넌트는 FPSpreadSheet 컴포넌트이다. 컴포넌트 설치 방법은 온라인으로 하는 것이 제일 편하다. 메인메뉴에서 Package -> Online Package Manager 를 선택한다.

검색창에 fpspreadsheet 를 치고 체크박스에 체크를 한 뒤 Install 을 클릭한다.

설치뒤에는 라자루스를 리빌드하게 된다. 리빌드가 끝나면 라자루스가 재실행된다. 컴포넌트 팔렛트에 FPSpreadsheet 탭이 생긴것을 알 수 있다.

9. 엑셀 파일로 출력

uses 에 FPSexport 를 추가해준다. 이 상태에서 F9키를 눌러서 실행하려 하면 에러가 발생한다. 필요한 패키지를 프로젝트에 포함시키지 않았기 때문이다. Project Inspector 에서 Required Packages 에 커서를 위치시키고 우클릭을 하면 Add 가 팝업된다. Add 를 하면 다음과 같은 창이 뜬다.

검색창에 fps 를 입력하면 관련 패키지 목록이 나타난다. 필요한 패키지는 laz_fpspreadsheetexport_visual 이다. 선택한다. Project Inspector 에 Required Packages 를 보면 laz_fpspreadsheetexport_visual 이 추가된 것을 알 수 있다.

F12 키를 눌러서 폼 디자인 화면으로 넘어간다. 버튼을 폼 위에 올리고 Object Inspector 에서 Name Property 를 'btnXLExport' 라고 수정한다. Caption 은 '엑셀 내보내기' 로 수정한다.

버튼을 더블 클릭하여 이벤트 핸들러 작성 화면으로 넘어간다.

procedure TMainForm.btnXLExportClick(Sender: TObject); 
var 
  Exp: TFPSExport; 
  ExpSettings: TFPSExportFormatSettings; 
begin 
  DataSource1.DataSet.First; 
  Exp := TFPSExport.Create(nil); 
  ExpSettings := TFPSExportFormatSettings.Create(true); 
  try 
    ExpSettings.ExportFormat := efXLSX; // 엑셀 2007 이상에서 사용하는 포맷 
    ExpSettings.HeaderRow := true; // 필드 이름 포함 
    Exp.FormatSettings := ExpSettings; 
    Exp.Dataset := DataSource1.DataSet; //데이터세트를 DataSource1 의 DataSet 으로 지정 
    Exp.FileName := 'pass_export.xlsx'; 
    Exp.Execute; 
    QuestionDlg('엑셀 내보내기', '엑셀파일 ' + Exp.FileName  + ' 가 만들어졌습니다.', mtCustom, [mrYes, '확인'], '') ; 
  finally 
    Exp.Free; 
    ExpSettings.Free; 
  end; 
end;                               

F9 키를 눌러서 실행시키고 '엑셀 내보내기' 버튼을 클릭하면 'pass_export.xlsx 가 만들어졌습니다.' 다이얼로그 박스가 뜬다. pass_export.xlsx 를 엑셀에서 열면 다음과 같이 출력된다. ExpSettings.HeaderRow := true; 로 설정되어 있어서 제일 위에 필드 이름이 포함되어 출력되었다.


이제 SQLite 를 통해서 데이터베이스로 비밀번호를 관리하고 엑셀로 출력할 수 있는 비밀번호 관리 애플리케이션이 완성되었다.

whatwas.zip
2.64MB
whatwas_source.zip
0.87MB