연습: 보고서 만들기
LightSwitch는 보고 기능이 기본 제공되지 않지만 Word를 통합하여 LightSwitch 응용 프로그램에서 보고서를 만들고 인쇄할 수 있습니다. Word에는 Visual Studio와 API를 사용하여 보고를 자동화할 수 있지만 확장 Office 통합 팩 LightSwitch는 작업을 단순화합니다.
Office 통합 팩을 사용하면 다양한 방식으로 Word 2010, Excel 2010, Outlook 2010을 더 쉽게 자동화할 수 있습니다. 예를 들어, 데이터 가져오기와 내보내기, 문서 및 보고서 작성, 전자 메일 및 약속 작업을 할 수 있습니다. CodePlex에서 확장 Office 확장 팩을 무료로 다운로드할 수 있습니다.
사전 요구 사항
이 연습에서는 다음 구성 요소가 필요합니다.
보고서 템플릿 만들기
먼저, 보고서의 템플릿으로 사용할 Word 문서를 만듭니다.
보고서 템플릿을 만들려면
Word 2010를 엽니다.
비어 있는 새 문서가 나타납니다.
문서의 맨 위에 PrescriptionContoso 제품 카탈로그를 입력합니다.
텍스트를 강조 표시한 다음 리본에 있는 홈 탭의 스타일그룹에서 제목 명령을 선택합니다.
커서를 제목 아래로 이동한 다음 삽입 탭에서 표 명령을 선택한 다음 표 삽입 명령을 선택합니다.
표 삽입 대화 상자가 표시됩니다.
열 수 텍스트 상자에 5를 입력한 다음 행 수 텍스트 상자에 2를 입력합니다.
창에 자동 맞춤 옵션 단추를 선택한 다음 확인 단추를 선택합니다.
표의 첫 행에 제품 ID, 제품, 설명, 가격, 포장 열 머리글을 입력합니다.
표를 강조 표시한 다음 삽입 탭의 링크 그룹에서 책갈피 명령을 선택합니다.
책갈피 대화 상자에서 책갈피의 이름을 카탈로그로 설정한 다음 추가 단추를 선택합니다.
페이지 레이아웃 탭의 페이지 설정에서 방향 명령을 선택한 다음 가로 명령을 선택합니다.
파일 탭에서 다른 이름으로 저장 명령을 선택합니다.
다른 이름으로 저장 대화 상자에서 내 문서 폴더를 열고 파일의 이름을 제품 카탈로그로 지정한 다음 저장 단추를 선택합니다.
파일 탭에서 종료 명령을 선택합니다.
응용 프로그램에 보고서 추가
보고서 템플릿을 만든 후 확장 Office 통합 팩을 설정하고 응용 프로그램 도구 모음에 단추를 추가하고 코드를 추가하여 보고서를 만듭니다. 문서 형식을 변경할 수도 있습니다.
참고
이전에 Vision Clinic 샘플 응용 프로그램을 빌드하지 않았다면 먼저 샘플 패키지의 일부분으로 다운로드한 PrescriptionContoso 데이터베이스를 설치 및 구성해야 합니다.Install.htm 파일을 연 다음 데이터베이스 설치 지침을 수행합니다.
확장을 사용하려면
Visual Studio 메뉴 모음에서 파일, 열기, 프로젝트/솔루션을 선택합니다.
Vision Clinic.sln 파일을 찾은 다음 열기 단추를 선택합니다.
솔루션 탐색기에서 속성 노드의 바로 가기 메뉴를 열고 열기를 선택합니다.
응용 프로그램 디자이너에서 확장 탭을 선택한 다음 Office 통합 팩 확인란을 선택합니다.
보고서를 만들려면
솔루션 탐색기에서 ProductList 화면 노드의 바로 가기 메뉴를 열고 열기를 선택합니다.
콘텐츠 트리 창에서 화면 명령 모음 노드를 확장한 다음 추가, 새 단추를 선택합니다.
단추 추가 대화 상자에서 카탈로그 옵션 단추를 선택하고, 만들고 있는 단추 이름을 지정한 다음 확인 단추를 선택합니다.
카탈로그 단추의 바로 가기 메뉴를 연 후 Execute 코드 편집을 선택합니다.
코드 편집기에서 파일의 맨 위에 다음 가져오기 또는 using 문을 입력합니다.
Imports OfficeIntegration
Using OfficeIntegration;
Catalog_Execute 메서드에 다음 코드를 추가합니다.
' Function to format a field as Currency. Dim formatPrice = Function(x As Decimal) As String Return Format(x, "c2") End Function ' Map the Word column names to the entity column names. Dim mapContent As New List(Of ColumnMapping) mapContent.Add(New ColumnMapping("ProductID", "ProductID")) mapContent.Add(New ColumnMapping("ProductName", "ProductName")) mapContent.Add(New ColumnMapping("Description", "Description")) ' Format the price as Currency using the Function created above. mapContent.Add(New ColumnMapping("CurrentPrice", "CurrentPrice", FormatDelegate:=formatPrice)) mapContent.Add(New ColumnMapping("ProductImage", "ProductImage")) ' Define the document object. Dim doc As Object = Word.GenerateDocument(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\Product Catalog.docx", Me.Products.SelectedItem, mapContent) ' Export the document object to Word. Word.Export(doc, "Catalog", 2, False, Me.Products, mapContent)
{ // Function to format a field as Currency. dynamic formatPrice = (decimal x) => { return Strings.Format(x, "c2"); }; // Map the Word column names to the entity column names. List<ColumnMapping> mapContent = new List<ColumnMapping>(); mapContent.Add(new ColumnMapping("ProductID", "ProductID")); mapContent.Add(new ColumnMapping("ProductName", "ProductName")); mapContent.Add(new ColumnMapping("Description", "Description")); // Format the price as Currency using the Function created above. mapContent.Add(new ColumnMapping("CurrentPrice", "CurrentPrice", FormatDelegate: formatPrice)); mapContent.Add(new ColumnMapping("ProductImage", "ProductImage")); // Define the document object. object doc = Word.GenerateDocument(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\Product Catalog.docx", this.Products.SelectedItem, mapContent); // Export the document object to Word. Word.Export(doc, "Catalog", 2, false, this.Products, mapContent); }
메뉴 모음에서 디버그, 디버깅 시작을 선택하여 응용 프로그램을 실행합니다.
작업 메뉴에서 제품 목록를 선택한 다음 카탈로그 단추를 선택하여 보고서를 봅니다.
(선택 사항) Catalog_Execute 메서드의 끝에 다음 코드 줄을 추가하여 보고서를 .pdf 형식으로 보고 저장합니다.
Word.SaveAsPDF(doc, Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\Product Catalog.pdf", True)
Word.SaveAsPDF(doc, Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\Product Catalog.pdf", true);
다음 단계
OfficeIntegration 네임스페이스의 API를 탐색하여 Office 통합 팩을 사용하여 할 수 있는 더 많은 작업들을 검색합니다.