연습: Excel 작업 창의 컨트롤에 데이터 바인딩
이 연습에서는 Microsoft Office Excel의 작업 창에 있는 컨트롤에 데이터를 바인딩하는 방법을 보여 줍니다. 컨트롤은 SQL Server 데이터베이스에 있는 테이블 간의 마스터/세부 관계를 나타냅니다.
적용 대상: 이 항목의 정보는 Excel 2007 및 Excel 2010의 문서 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
이 연습에서는 다음 작업을 수행합니다.
워크시트에 컨트롤 추가
작업 창 컨트롤 만들기
작업 창 컨트롤에 데이터 바인딩된 Windows Forms 컨트롤 추가
응용 프로그램을 열 때 작업 창 표시
참고
일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다. 설치한 Visual Studio 버전과 사용하는 설정에 따라 이러한 요소가 결정됩니다. 자세한 내용은 설정에 대한 작업을 참조하십시오.
사전 요구 사항
이 연습을 완료하려면 다음 구성 요소가 필요합니다.
-
Microsoft Office 개발자 도구를 포함하는 Visual Studio 2010 버전입니다. 자세한 내용은 [Office 솔루션을 개발할 수 있도록 컴퓨터 구성](bb398242\(v=vs.100\).md)을 참조하십시오.
Excel 2007 또는 Excel 2010
Northwind SQL Server 샘플 데이터베이스가 있는 서버에 액세스할 수 있어야 합니다.
SQL Server 데이터베이스에서 읽고 쓰기 위한 권한이 있어야 합니다.
프로젝트 만들기
첫 번째 단계는 Excel 통합 문서 프로젝트 만들기입니다.
새 프로젝트를 만들려면
My Excel Actions Pane이라는 Excel 통합 문서 프로젝트를 만듭니다. 마법사에서 새 문서 만들기를 선택합니다. 자세한 내용은 방법: Visual Studio에서 Office 프로젝트 만들기를 참조하십시오.
Visual Studio의 디자이너에 새 Excel 통합 문서가 열리고 My Excel Actions Pane 프로젝트가 솔루션 탐색기에 추가됩니다.
프로젝트에 새 데이터 소스 추가
프로젝트에 새 데이터 소스를 추가하려면
데이터 소스 창이 표시되지 않으면 데이터 메뉴에서 데이터 소스 표시를 클릭합니다.
참고
데이터 소스 표시를 사용할 수 없으면 Excel 워크시트 안쪽을 클릭한 다음 다시 확인합니다.
새 데이터 소스 추가를 클릭하여 데이터 소스 구성 마법사를 시작합니다.
데이터베이스를 선택하고 다음을 클릭합니다.
Northwind 샘플 SQL Server 데이터베이스에 대한 데이터 연결을 선택하거나 새 연결 단추를 사용하여 새 연결을 추가합니다.
다음을 클릭합니다.
연결을 저장하는 옵션이 선택되어 있는 경우 선택을 취소하고 다음을 클릭합니다.
데이터베이스 개체 창에서 테이블 노드를 확장합니다.
Suppliers 테이블 옆에 있는 확인란을 선택합니다.
Products 테이블을 확장하고 ProductName, SupplierID, QuantityPerUnit 및 UnitPrice를 선택합니다.
마침을 클릭합니다.
마법사에서 Suppliers 테이블과 Products 테이블이 데이터 소스 창에 추가됩니다. 솔루션 탐색기에 표시되는 프로젝트에 형식화된 데이터 집합도 추가됩니다.
워크시트에 컨트롤 추가
이제 NamedRange 컨트롤과 ListObject 컨트롤을 첫 번째 워크시트에 추가합니다.
NamedRange 컨트롤 및 ListObject 컨트롤을 추가하려면
My Excel Actions Pane.xls 통합 문서가 Visual Studio 디자이너에 열려 있고 Sheet1이 표시되어 있는지 확인합니다.
데이터 소스 창에서 Suppliers 테이블을 확장합니다.
Company Name 노드에서 드롭다운 화살표를 클릭하고 NamedRange를 선택합니다.
데이터 소스 창에서 Company Name을 끌어 Sheet1의 A2에 놓습니다.
CompanyNameNamedRange라는 NamedRange 컨트롤이 작성되고 <CompanyName> 텍스트가 셀 A2에 나타납니다. 이와 함께 suppliersBindingSource라는 BindingSource, 테이블 어댑터 및 DataSet이 프로젝트에 추가됩니다. 컨트롤이 BindingSource에 바인딩되고, 이는 다시 DataSet 인스턴스에 바인딩됩니다.
데이터 소스 창에서 Suppliers 테이블 아래의 열 밑으로 스크롤합니다. 목록 아래쪽에 Products 테이블이 있습니다. 이 테이블은 Suppliers 테이블의 자식이기 때문에 이와 같은 위치에 있습니다. Suppliers 테이블과 동일한 수준에 있는 테이블이 아닌 이 Products 테이블을 선택한 다음 드롭다운 화살표를 클릭합니다.
드롭다운 목록에서 ListObject를 클릭하고 Products 테이블을 Sheet1의 셀 A6에 끌어 놓습니다.
ProductNameListObject라는 ListObject 컨트롤이 셀 A6에 작성됩니다. 이와 함께 productsBindingSource라는 BindingSource와 테이블 어댑터가 프로젝트에 추가됩니다. 컨트롤이 BindingSource에 바인딩되고, 이는 다시 DataSet 인스턴스에 바인딩됩니다.
C#의 경우, 구성 요소 트레이에서 suppliersBindingSource를 선택하고 속성 창에서 Modifiers 속성을 Internal로 변경합니다.
작업 창에 컨트롤 추가
이제 콤보 상자가 포함된 작업 창 컨트롤이 필요합니다.
작업 창 컨트롤을 추가하려면
솔루션 탐색기에서 My Excel Actions Pane 프로젝트를 선택합니다.
프로젝트 메뉴에서 새 항목 추가를 클릭합니다.
새 항목 추가 대화 상자에서 작업 창 컨트롤을 선택하고 이름을 ActionsControl로 지정한 다음 추가를 클릭합니다.
작업 창 컨트롤에 데이터 바인딩된 Windows Forms 컨트롤을 추가하려면
도구 상자의 공용 컨트롤 탭에서 ComboBox 컨트롤을 작업 창 컨트롤에 끌어 놓습니다.
Size 속성을 171, 21로 변경합니다.
콤보 상자에 맞도록 사용자 정의 컨트롤의 크기를 조정합니다.
작업 창의 컨트롤을 데이터에 바인딩
이 단원에서는 ComboBox의 데이터 소스를 워크시트의 NamedRange 컨트롤과 동일한 데이터 소스로 설정합니다.
컨트롤의 데이터 바인딩 속성을 설정하려면
작업 창 컨트롤을 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.
작업 창 컨트롤의 Load 이벤트에 다음 코드를 추가합니다.
Private Sub ActionsControl_Load(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.Load Me.ComboBox1.DataSource = Globals.Sheet1.SuppliersBindingSource Me.ComboBox1.DisplayMember = "CompanyName" End Sub
private void ActionsControl_Load(object sender, EventArgs e) { this.comboBox1.DataSource = Globals.Sheet1.suppliersBindingSource; this.comboBox1.DisplayMember = "CompanyName"; }
C#의 경우 ActionsControl에 대한 이벤트 처리기를 만들어야 합니다. 이 코드를 ActionsControl 생성자에 배치할 수 있습니다. 이벤트 처리기를 만드는 방법에 대한 자세한 내용은 방법: Office 프로젝트에서 이벤트 처리기 만들기를 참조하십시오.
public ActionsControl() { InitializeComponent(); this.Load += new EventHandler(ActionsControl_Load); }
작업 창 표시
작업 창은 런타임에 컨트롤을 추가할 때까지 표시되지 않습니다.
작업 창을 표시하려면
솔루션 탐색기에서 ThisWorkbook.vb 또는 ThisWorkbook.cs를 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.
ThisWorkbook 클래스에 사용자 정의 컨트롤의 새 인스턴스를 만듭니다.
Dim actions As New ActionsControl
ActionsControl actions = new ActionsControl();
ThisWorkbook의 Startup 이벤트 처리기에서 작업 창에 컨트롤을 추가합니다.
Private Sub ThisWorkbook_Startup(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Startup Me.ActionsPane.Controls.Add(actions) End Sub
private void ThisWorkbook_Startup(object sender, System.EventArgs e) { this.ActionsPane.Controls.Add(actions); }
응용 프로그램 테스트
이제 문서를 테스트하여 문서를 열 때 작업 창이 열리고 컨트롤에 마스터/세부 항목 관계가 있는지 확인할 수 있습니다.
문서를 테스트하려면
F5 키를 눌러 프로젝트를 실행합니다.
작업 창이 표시되는지 확인합니다.
목록 상자에서 회사를 선택합니다. 회사 이름이 NamedRange 컨트롤에 나열되고 제품 세부 사항이 ListObject 컨트롤에 나열되는지 확인합니다.
여러 회사를 선택하여 회사 이름과 제품 세부 사항이 올바르게 변경되는지 확인합니다.
다음 단계
이후에 수행할 수 있는 작업은 다음과 같습니다.
Word의 컨트롤에 데이터를 바인딩합니다. 자세한 내용은 연습: Word 작업 창의 컨트롤에 데이터 바인딩을 참조하십시오.
작업 창에서 컨트롤을 표시하거나 숨깁니다. 자세한 내용은 연습: 사용자 컨텍스트에 따라 작업 창 변경을 참조하십시오.
프로젝트를 배포합니다. 자세한 내용은 배포 개요(Visual Studio에서 Office 개발)를 참조하십시오.