반응형

C#으로 엑셀 워크시트 선택, 생성, 컨트롤

 

 

1. 목표

  • 원하는 워크북 열기

  • 워크시트 수 확인

  • 워크시트 생성, 삭제

  • 워크시트 선택 방법

  • 워크시트 이름 변경

2. 전체 코드

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;

namespace Chapter_02
{
    class Program
    {
        static void Main(string[] args)
        {
            Application excelapp = new Application();
            Workbook read_wb = excelapp.Workbooks.Open(Filename: @"c:\test\123.xlsx");

            Console.WriteLine(read_wb.Worksheets.Count);

            Worksheet ws1 = read_wb.Worksheets.Item["sheet1"];
            Worksheet ws2 = read_wb.Worksheets.Item[2];

			ws1.Name = "가나다";
            
            Console.WriteLine("read_wb.Worksheets.Item[\"sheet1\"] = " + ws1.Name);
            Console.WriteLine("read_wb.Worksheets.Item[2] = " + ws2.Name);

            ws2.Delete();
            
            read_wb.Worksheets.Add(After: read_wb.Worksheets[1]);
            read_wb.Worksheets.Add(Before: read_wb.Worksheets[2]);

			read_wb.Save();

            read_wb.Close();
            excelapp.Quit();

            Marshal.ReleaseComObject(ws1);
            Marshal.ReleaseComObject(ws2);
            Marshal.ReleaseComObject(read_wb);
            Marshal.ReleaseComObject(excelapp);
        }
    }
}

 

3. 뜯어 보기

Workbook read_wb = excelapp.Workbooks.Open(Filename: @"c:\test\123.xlsx");
  • 경로(Filename)에 있는 엑셀 파일을 불러 온다.

 

Console.WriteLine(read_wb.Worksheets.Count);
  • 읽어온 워크북(read_wb)에 있는 워크시트의 숫자를 콘솔창에 출력한다.

 

Worksheet ws1 = read_wb.Worksheets.Item["sheet1"];
Worksheet ws2 = read_wb.Worksheets.Item[2];
  • 워크북에 있는 워크시트를 선택하는 방법이다

  • Item["Sheet1"]처럼 시트 명을 이용해서 선택이 가능하다.

  • Item[1]처럼 워크시트의 순서를 이용 할 수 있다. (순서는 1부터 시작한다.)

ws1.Name = "가나다";
  • ws1의 시트 이름을 변경한다.

Console.WriteLine("read_wb.Worksheets.Item[\"sheet1\"] = " + ws1.Name);
Console.WriteLine("read_wb.Worksheets.Item[2] = " + ws2.Name);
  • ws1, ws2의 시트명을 출력하여 변경되었는지 확인한다.

ws2.Delete();
  • ws2 시트를 삭제한다.

read_wb.Worksheets.Add(After: read_wb.Worksheets[1]);
read_wb.Worksheets.Add(Before: read_wb.Worksheets[2]);
  • 시트를 추가한다.

  • 'After : read_wb.Worksheets[1]'은 첫번째 시트 뒤에 새 시트를 생성한다.

  • 'Before : read_wb.Worksheets[2]'는 두번째 시트 앞에 새 시트를 생성한다.

  • 'Count'를 이용하여 여러개의 시트를 한번에 만들 수 있다.

read_wb.Save();

read_wb.Close();
excelapp.Quit();

Marshal.ReleaseComObject(ws1);
Marshal.ReleaseComObject(ws2);
Marshal.ReleaseComObject(read_wb);
Marshal.ReleaseComObject(excelapp);
  • 파일을 세이브하고 엑셀을 닫는다.

  • 'Marshal.ReleaseComObject(ws1)'를 이용하여 사용한 'ws1', 'ws2'객체도 해제(Release) 해주어야 한다.

반응형

+ Recent posts