Visual Studio 2008, 닷넷프레임워크 2.0 기반에서 작성하였습니다.

 

 

테스트 용 콘솔  프로젝트 하나 생성하였습니다.

 

닷넷 프레임워크의 VSTO를 사용하기 위해선

 Microsoft.Office.Interop.Excel

참조 추가해주어야합니다.

 

[이미지 1]  Microsoft.Office.Interop.Excel 참조 추가

 


코드 부분입니다.

간단히 엑셀의 [1,1]에 테스트라는 문자열을 입력하였습니다.

엑셀은 배열로 접근 할 때, 0부터 시작이 아닌 1부터 시작입니다.

작업을 하신 후에는 꼭 메모리를 해제 시켜주셔야

Excel이 정상적으로 종료됩니다.

이 작업을 하지 않으실 경우에 작업 관리자에 Excel이 남아 있게 됩니다.

 

AboutExcel.zip

 

 

using System;
using System.Collections.Generic;
using System.Text;
using Excel = Microsoft.Office.Interop.Excel;

namespace AboutExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            AboutExcelWrite();
        }

        /// <summary>
        /// Excel에 작성하는 방법에 대해 설명할 메소드입니다.
        /// </summary>
        private static void AboutExcelWrite()
        {
            Excel.Application excelApp = new Excel.Application();
            Excel.Workbook wb = excelApp.Workbooks.Add(true);
            Excel._Worksheet workSheet = wb.Worksheets.get_Item(1) as Excel._Worksheet;


            //엑셀은 맨처음 Cell이 1,1 입니다      0,0이 아닙니다
            workSheet.Cells[1, 1] = "테스트";


            ExcelDispose(excelApp, wb, workSheet);
        }


        /// <summary>
        /// 저장및 메모리 해제
        /// </summary>
        /// <param name="excelApp"></param>
        /// <param name="wb"></param>
        /// <param name="workSheet"></param>
        public static void ExcelDispose(Excel.Application excelApp, Excel.Workbook wb, Excel._Worksheet workSheet)
        {
            wb.SaveAs(@"E:\Program\etc\C#\About\AboutExcel\bin\Debug\test.xls", Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
                Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

            wb.Close(Type.Missing, Type.Missing, Type.Missing);
            excelApp.Quit();
            releaseObject(excelApp);
            releaseObject(workSheet);
            releaseObject(wb);
        }

        #region 메모리해제
        private static void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception e)
            {
                obj = null;
            }
            finally
            {
                GC.Collect();
            }
        }
        #endregion
    }
}


 

 

 

+ Recent posts