VSTO 여행 시리즈(2): Excel 솔루션 만들기

본 주제 개요
  • 인용
  • VSTO 프로젝트를 작성합니다
  • Excel 객체 모델
  • Excel 외장 프로그램을 만듭니다
  • Excel 문서급 사용자 정의 항목을 만듭니다
  • 소결

  •  
    인용
    아마 많은 친구들이 VSTO라는 말을 들어보지 못했을 거예요. 본인도 전에 몰랐지만 업무 때문에 이런 부분을 접했어요. VSTO 쪽은 국내 자료가 적기 때문에 제가 처음에 공부를 할 때 MSDN을 참고했지만 위의 많은 자료가 영어로 되어 있어서 공부를 느리게 할 수도 있어요. 그래서 최근에 배운 내용을 적어놨어요.첫째, 공고한 학습 노트로서 둘째, 이 블로그들이 방금 VSTO를 접한 친구들이 참고할 수 있도록 도와줄 수 있기를 바란다.
    이렇게 쓸데없는 말을 많이 했는데 도대체 VSTO가 뭘까요?여기서 제가 간단하게 요약한 바와 같이 VSTO는 마이크로소프트가 Office 제품을 조작하는 기술을 내놓은 것입니다. 그 중에서 일부 라이브러리를 제공하여 개발자가 Office의 해결 방안, 즉 Word/Excel/Outlook에 대해 확장 기능을 실현할 수 있도록 합니다.VSTO에 대한 자세한 내용은 이 시리즈의 첫 번째 블로그를 참조하십시오.이 주제에서 Excel의 해결 방안을 어떻게 만드는지 소개해 드리겠습니다.
    둘째, VSTO 프로젝트 만들기
    VSTO를 처음 접한 친구에게는 VSTO 프로젝트를 만드는 방법을 전혀 몰랐을 수도 있습니다. 이 부분을 통해 여러분은 이렇게 간단하다고 느낄 수 있을 거라고 믿습니다.
    환경의 구축
    VSTO 개발을 위한 환경 구축은 상당히 간단하다. Visual Studio 2010(물론 VS2010을 설치할 때 설치 구성 요소에서 VSTO 선택을 선택해야 한다. 이 옵션은 기본적으로 설정된 것이다. VS를 설치할 때 유의할 수 있다)과 Office 2010을 설치하면 된다. 물론 VS2008과 Office 2007의 설치도 환경 구축을 완성할 수 있다.
    VSTO 여정을 시작하기 위한 첫 번째 Excel 프로젝트 만들기
    첫 번째 단계에서 새 항목 ->Visual C#->Office->2010을 선택한 다음 Excel 2010 외장 프로그램(영어: Excel 2010 Add-in)을 선택합니다.
    그림에서 볼 수 있듯이 외부 연결 프로그램 외에 Excel 템플릿과 Excel 문서라는 두 가지 항목 유형이 있다. 그들의 차이점은 외부 연결 프로그램이 응용 프로그램 수준이라는 것이다. 즉, 만약에 당신이 Excel 2010 외부 연결 프로그램을 만들었다면 이 프로그램은 모든 Excel 응용 프로그램에 유효하다. 왜냐하면 매번 Excel이 시작될 때마다 이 플러그인(즉 이 프로그램)을 불러오기 때문이다.Excel이나 Word를 시작할 때 일부 마운트 항목을 불러옵니다. 사실 이 마운트 항목들은 외부 프로그램, 즉 플러그인에 속합니다. 시작 과정은 아래 그림을 보십시오.
    문서와 템플릿 프로젝트는 모두 문서 단계에 속하는 프로그램입니다. 이 프로그램은 현재 문서와 템플릿에만 유효합니다. 이 두 가지 유형의 프로젝트를 만들면 프로젝트의 프로젝트 디렉터리에서word 파일을 생성합니다. (문서 프로젝트는 Document1.docx 파일을 생성하고 템플릿 프로젝트는 Document1.dotx 파일을 생성합니다.)
    생성이 성공하면 외부 프로그램의 프로젝트 파일 구조는 다음 그림과 같습니다.
    그림에서 알 수 있듯이 방금 만든 VSTO 외부 프로그램은 모두 ThisAddIn이 하나밖에 없다.cs 파일, 이 파일은 숙주 항목입니다. (숙주 항목과 숙주 컨트롤에 대한 내용은 이 시리즈의 첫 번째 블로그를 볼 수 있습니다.) 이 파일을 통해 Excel 대상에 접근할 수 있습니다.동시에 이 클래스에는 ThisAddIn_Startup 및 ThisAddIn_Shutdown 두 가지 방법, 두 가지 방법의 이름에서 알 수 있듯이, 코드가 외부 프로그램을 불러올 때 실행하려면 ThisAddIn_Startup 방법 내용, 외부 프로그램이 마운트 해제될 때 코드를 실행하려면 이 코드를ThisAddIn_Shutdown 메서드에서
    3. Excel 객체 모델
    Excel 프로젝트를 개발하려면 Excel 대상 모델에 대한 이해가 없어서는 안 된다. Excel 대상 모델을 이해해야만 Excel을 더욱 잘 처리할 수 있다.다음은 Excel 객체 모델의 그림입니다.
    다음은 위 그림의 각 객체에 대한 간단한 설명입니다.
    응용 프로그램 대상 - Excel의 응용 프로그램 대상은 Excel 응용 프로그램을 표시합니다. 이 대상은 모든 Excel 대상의 뿌리입니다. 응용 프로그램 대상을 통해 다른 대상을 얻을 수 있습니다. 외부 프로그램에서 우리는 아래의 방식으로 응용 프로그램 대상을 얻을 수 있습니다. 글로벌스.ThisAddIn.Application
    Workbooks 대상은 Workbook 대상의 집합을 대표하고, Workbook 대상은 Excel의 단일 워크북을 표시하며, 우리는 다음과 같은 방식으로 워크북 대상: Globals를 얻을 수 있습니다.ThisAddIn.Application.ThisWorkbook
    Worksheets 대상은 Worksheet 대상의 집합을 대표하고, Worksheet는 Excel의 표를 대표하며, 아래 코드는 Worksheet 대상: Globals.ThisAddIn.Application.ThisWorkbook.ActiveSheet(활성화된 테이블, Excel 파일을 열 때마다 테이블 1 즉sheet1이 활성화되므로 이 코드를 통해 테이블 1 대상을 얻는다고 함)
    Range 객체는 하나의 범위를 나타내며 Excel 문서를 조작하는 데 가장 많이 사용되는 객체입니다. 하나의 셀, 한 줄, 한 열 또는 여러 개의 셀 블록(연속 또는 비연속)으로 표현할 수 있는 셀 선택 범위, 심지어 여러 워크시트의 셀 세트를 나타냅니다.위의 설명이 너무 무미건조할 수 있으므로 다음 그림을 통해 Excel의 각 객체를 더욱 잘 이해할 수 있을 것입니다.
    4. Excel 외장 프로그램 만들기
    Excel 대상 모델을 소개한 후에 우리는 이 대상을 이용하여 Excel 문서를 조작할 수 있다. 다음은 간단한 Excel 외부 프로그램을 만들 것이다.
    먼저 우리는 소프트웨어를 사용할 때 환영 인터페이스를 팝업한다고 시뮬레이션했다. 그러면 우리는 외부 프로그램을 만들어서 Excel 파일을 열 때마다 환영 인터페이스를 팝업하고 종료할 때 "고마워요"인터페이스를 팝업한다.
    우리는 위의 창설 프로젝트에서 아래의 코드를 개입하기만 하면 된다.
       
       
       
       
    1. using System.Windows.Forms;  
    2.  
    3. namespace MyExcelAddIn1  
    4. {  
    5.     public partial class ThisAddIn  
    6.     {  
    7.         private void ThisAddIn_Startup(object sender, System.EventArgs e)  
    8.         {  
    9.             //  Excel , Startup  
    10.             MessageBox.Show(" Microsoft Excel");  
    11.         }  
    12.  
    13.         private void ThisAddIn_Shutdown(object sender, System.EventArgs e)  
    14.         {  
    15.             //  Excel , Shutdown  
    16.             MessageBox.Show(" !");  
    17.         }  
    18.  
    19.         #region VSTO generated code  
    20.  
    21.         ///   
    22.         /// Required method for Designer support - do not modify  
    23.         /// the contents of this method with the code editor.  
    24.         ///   
    25.         private void InternalStartup()  
    26.         {  
    27.             this.Startup += new System.EventHandler(ThisAddIn_Startup);  
    28.             this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);  
    29.         }  
    30.           
    31.         #endregion  
    32.     }  

    이렇게 해서 우리는 위의 간단한 시뮬레이션 수요를 완성했다. 다음은 F5를 누르면 효과를 시험해 보자!F5를 눌러 프로그램을 실행하면 Excel을 먼저 열면 시작 화면이 팝업됩니다.
    Excel 창에서 "X"버튼을 클릭하면 "사용해 주셔서 감사합니다!"의 창은 다음과 같습니다.
    Ok 버튼을 클릭해야 Excel이 정상적으로 종료됩니다.이렇게 하면 간단한 Excel 인터페이스를 완성할 수 있습니다. 위에서 언급한 바와 같이 인터페이스는 응용 프로그램 단계이기 때문에 Excel을 열 때마다 환영 인터페이스와 Excel을 닫을 때마다'사용해 주셔서 감사합니다'창이 있습니다. 어떤 친구들은 이 플러그인을 제거하려면 어떻게 해야 합니까?방법은 간단합니다. 해결 방안인 > 정리를 오른쪽 단추로 누르면 됩니다. 또한 개발 도구 옵션 카드인 >COM 플러그인에서 팝업 창에서 사용자 정의 플러그인을 선택하고 제거 단추를 누르면 됩니다.구체적인 단계는 다음 그림을 참조하십시오.
    5. Excel 문서급 사용자 정의 항목 만들기
    Excel 외장 프로그램을 만든 후 문서 수준의 항목을 만드는 방법에 대해 설명합니다.
    1. Excel 2010 워크북(Excel 워크북) 항목을 새로 만듭니다.
    2. OK 버튼을 클릭하고 아래 창에서 OK 버튼을 클릭합니다.
    3. 첫 번째 Excel 워크북 만들기 프로젝트는 아래의 창(창은 만든 프로젝트가 VBA 프로젝트 시스템에 접근할 수 있는지 여부)을 팝업합니다. 이 때 "Ok"를 누르면 Excel 워크북 프로젝트를 만들 수 있습니다.
    지금 우리는 수요를 모의해 보자. 예를 들어 현재 성적표 작업표가 하나 있는데, 우리는 각 과목의 불합격 학생의 이름을 얻기를 바란다.이 때 우리는 위에서 만든 워크북 프로젝트에 ComboBox, Button, textbox를 추가하기만 하면 된다.button의 Click 이벤트에 다음 코드를 추가합니다.
       
       
       
       
    1. //   
    2.         private void btnSearch_Click(object sender, EventArgs e)  
    3.         {  
    4.             //  textbox  
    5.             txtResult.Clear();  
    6.  
    7.             //   
    8.             int subjectIndex = cbxsubjects.SelectedIndex;        
    9.             if (subjectIndex == -1)  
    10.             {  
    11.                 MessageBox.Show(" ");  
    12.                 return;  
    13.             }  
    14.  
    15.             //   
    16.             string subjectName = cbxsubjects.SelectedItem.ToString();  
    17.             //   
    18.             Excel.Worksheet worksheet =(Excel.Worksheet)Globals.ThisWorkbook.ActiveSheet;  
    19.              
    20.             for (int row = 2; row 
    21.             {           
    22.                 Excel.Range rng =(Excel.Range)worksheet.Cells[row,subjectIndex + 2];  
    23.                 Excel.Range rng1 = (Excel.Range)worksheet.Cells[row, 1];  
    24.                 if (rng.Value
    25.                 {  
    26.                     txtResult.Text += rng1.Value + "; ";  
    27.                 }  
    28.             }  
    29.             if (txtResult.Text.Length == 0)  
    30.             {  
    31.                 txtResult.Text = subjectName + " ";  
    32.             }  
    33.         } 

    이 프로젝트를 실행한 결과는 다음과 같습니다.
    여섯, 작은 매듭
    여기서 본 주제에 대한 소개는 끝났습니다. 본 주제는 먼저 Excel의 대상 모델과 Excel을 만드는 두 가지 프로젝트 유형을 소개했습니다. 이 주제를 통해 간단한 Excel 해결 방안을 개발할 수 있기를 바랍니다. 다음 주제는 Excel을 위한 옵션 카드와 상하문 메뉴를 사용자 정의하는 방법을 소개할 것입니다.
     

    좋은 웹페이지 즐겨찾기