C# 기초 공부

[C#] 엑셀 파일 만들기 (기초)

jju_developer 2024. 10. 5. 18:08
728x90

1. 새프로젝트 생성

2. 만들어 져있는 cs 파일 이름 MainApp.cs로 변경

3. 종속성에 오른쪽 클릭 후 프로젝트 참조 추가

4. COM > 형식 라이브러리 > Microsoft Excel 15.0 (버전은 컴터마다 다름) 선택

 

5. 확인 후 추가된거 볼 수 있음

 

6. interop 형식에 예 로 되어있는지 확인

7. 코드 작성

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

namespace COMInterop
{
    class MainApp
    {
        // 예전 방법
        public static void OldWay(string[,] data, string savePath)
        {
            Excel.Application excelApp = new Excel.Application();
            excelApp.Workbooks.Add(Type.Missing);   // Type.Missing 생략 가능
            Excel.Worksheet worksheet = (Excel.Worksheet)excelApp.ActiveSheet;

            try
            {
                for (int i = 0; i < data.GetLength(0); i++)
                {
                    ((Excel.Range)worksheet.Cells[i + 1, 1]).Value2 = data[i, 0]; // 첫 번째 열
                    ((Excel.Range)worksheet.Cells[i + 1, 2]).Value2 = data[i, 1]; // 두 번째 열
                }

                worksheet.SaveAs(savePath + "\\jju-book-old.xlsx",
                    Type.Missing,
                    Type.Missing,
                    Type.Missing,
                    Type.Missing,
                    Type.Missing,
                    Type.Missing,
                    Type.Missing,
                    Type.Missing,
                    Type.Missing);
            }
            finally
            {
                excelApp.Quit();
                Marshal.ReleaseComObject(worksheet);
                Marshal.ReleaseComObject(excelApp);
            }
        }

        // 요즘 방법
        public static void NewWay(string[,] data, string savePath)
        {
            Excel.Application excelApp = new Excel.Application();
            excelApp.Workbooks.Add();
            Excel._Worksheet worksheet = (Excel._Worksheet)excelApp.ActiveSheet;

            try
            {
                for (int i = 0; i < data.GetLength(0); i++)
                {
                    worksheet.Cells[i + 1, 1] = data[i, 0]; // 첫 번째 열
                    worksheet.Cells[i + 1, 2] = data[i, 1]; // 두 번째 열
                }

                worksheet.SaveAs(savePath + "\\jju-book-dynamic.xlsx");
            }
            finally
            {
                excelApp.Quit();
                Marshal.ReleaseComObject(worksheet);
                Marshal.ReleaseComObject(excelApp);
            }
        }

        static void Main(string[] args)
        {
            string savePath = System.IO.Directory.GetCurrentDirectory();
            string[,] array = new string[,]
            {
                { "Receptionist", "2017" },
                { "English Teacher", "2020" },
                { "Human Resource", "2021" },
                { "Developer", "2023" }
            };

            Console.WriteLine("Creating Excel doc in old way...");
            OldWay(array, savePath);

            Console.WriteLine("Creating Excel doc in new way...");
            NewWay(array, savePath);
        }
    }
}

 

구버전, 신버전 동시에 진행 후 코드 비교

 

8. F5 빌드

 

 

9. source\repos\COMInterop\bin\Debug\net8.0

 

해당 경로에 생성된 파일 확인!!

 

 

 

728x90