반응형

* 엑셀 파일 쓰고 읽기 예제...

 

위 그림과 같이 프로젝트에 참조를 추가 해 줍니다.

 

참조가 추가 되었으면 이제 메인화면을 만들어 봅니다.

 

메인화면

소스 구현을 하기에 앞서 미리 엑셀 파일을 열어 D:\통합 문서.xls 로 샘플로 하나 저장 해 놓았습니다.

샘플로 파일 하나 만들고 위치는 어디에 있던 상관 없습니다.

 

Form.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using Excel = Microsoft.Office.Interop.Excel;
using System.IO;

namespace CSharp_ExcelFile
{
    public partial class Form1 : Form
    {
        Excel.Application ExcelApp = null;
        Excel.Workbook wb = null;
        Excel.Worksheet ws = null;

        public Form1()
        {
            InitializeComponent();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            //Read

            //파일이 없다면...
            if (!File.Exists("C:\\Test.xls"))
            {
                textBox1.Text += "파일이 존재 하지 않습니다." + System.Environment.NewLine;
                return;
            }

            try
            {
                ExcelApp = new Excel.Application();
                wb = ExcelApp.Workbooks.Open("C:\\Test.xls",
                                              0,
                                              true,
                                              5,
                                              "",
                                              "",
                                              true,
                                              Excel.XlPlatform.xlWindows,
                                              "\t",
                                              false,
                                              false,
                                              0,
                                              true,
                                              1,
                                              0);
                ws = wb.Worksheets["Sheet1"] as Excel.Worksheet;
                
                Excel.Range rg = ws.Cells[1, 1] as Excel.Range ;
                Excel.Range rg2 = ws.Cells[1, 2] as Excel.Range;
                Excel.Range rg3 = ws.Cells[1, 3] as Excel.Range;
                Excel.Range rg4 = ws.Cells[1, 4] as Excel.Range;

                //범위 지정... 
                Excel.Range rgTest = ws.get_Range("A1", "A4");
                System.Array ayTest = (System.Array)rgTest.Cells.Value2 ;
                string[] strArray = ConvertToStringArray(ayTest);


                //텍스트 박스에 디스플레이...
                textBox1.Text += "A1: " + rg.Value2.ToString() + System.Environment.NewLine;
                textBox1.Text += "A2: " + rg2.Value2.ToString() + System.Environment.NewLine;
                textBox1.Text += "A3: " + rg3.Value2.ToString() + System.Environment.NewLine;
                textBox1.Text += "A4: " + rg4.Value2.ToString() + System.Environment.NewLine;
                textBox1.Text += "===========================" + System.Environment.NewLine;
                textBox1.Text += "Excel File Read..." + System.Environment.NewLine; ;
                textBox1.Text += "===========================" + System.Environment.NewLine;

                //범위 결과 표시...
                for (int iCount = 0; iCount < strArray.Length; iCount++)
                {
                    //범위 테스트
                    textBox1.Text += "A"+ (iCount+1).ToString()  +": " + strArray[iCount] + System.Environment.NewLine;
                }

                //파일 닫기... 
                wb.Close(false, Type.Missing, Type.Missing);
                wb = null;
                ExcelApp.Quit();
                
            }
            catch (Exception ex)
            {
                //객체들 메모리 해제
                ReleaseExcelObject(ws);
                ReleaseExcelObject(wb);
                ReleaseExcelObject(ExcelApp);

                //가비지 컬렉션 직접 실행...
                GC.Collect();

            }
            finally
            {
                //객체들 메모리 해제
                ReleaseExcelObject(ws);
                ReleaseExcelObject(wb);
                ReleaseExcelObject(ExcelApp);

                //가비지 컬렉션 직접 실행...
                GC.Collect();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Write

            //파일이 존재 한다면..삭제 하고..
            if (File.Exists("C:\\Test.xls"))
            {
                File.Delete("C:\\Test.xls");
            }

            try
            {
               
                ExcelApp = new Excel.Application();
                wb = ExcelApp.Workbooks.Open("D:\\통합 문서.xls", 
                                              0,
                                              true,
                                              5, 
                                              "", 
                                              "", 
                                              true, 
                                              Excel.XlPlatform.xlWindows, 
                                              "\t", 
                                              false, 
                                              false, 
                                              0, 
                                              true, 
                                              1, 
                                              0);
                ws = wb.Worksheets["Sheet1"] as Excel.Worksheet;


                //엑셀 시트 인덱스 번호는 0,0 부터 시작 하는 것이 아니라 1,1 A1 부터 시작 함. 0,0 으로 시작하면 오류...
                //시트에 값 쓰기...
                ws.Cells[1, 1] = "1";
                ws.Cells[1, 2] = "12";
                ws.Cells[1, 3] = "123";
                ws.Cells[1, 4] = "1234";

                ws.Cells[2, 1] = "Test1"; //A2
                ws.Cells[3, 1] = "Test12"; //A3
                ws.Cells[4, 1] = "Test123"; //A4

                //포뮬러 셋팅하기
                //Excel.Range rg = ws.Cells[1,1] as Excel.Range;
                //rg.Formula = "=SUM($A$1:$A$100)";
                //string strTmp = rg.Formula.ToString();


                //텍스트 박스에 디스플레이...
                textBox1.Text += "A1: 1"  + System.Environment.NewLine ;
                textBox1.Text += "A2: 12"  + System.Environment.NewLine;
                textBox1.Text += "A3: 123"  + System.Environment.NewLine;
                textBox1.Text += "A4: 1234"  + System.Environment.NewLine;
                textBox1.Text += "===========================" + System.Environment.NewLine;
                textBox1.Text += "Excel File Write..." + System.Environment.NewLine; ;
                textBox1.Text += "===========================" + System.Environment.NewLine;

                //다른 이름으로 저장하기...
                //wb.Save(); // => 오픈한 파일 그대로 저장...
                wb.SaveAs("C:\\Test.xls", 
                          Excel.XlFileFormat.xlWorkbookNormal, 
                          Type.Missing , 
                          Type.Missing, 
                          Type.Missing, 
                          Type.Missing, 
                          Excel.XlSaveAsAccessMode.xlNoChange,
                          Type.Missing,
                          Type.Missing,
                          Type.Missing,
                          Type.Missing,
                          Type.Missing);


                //파일 닫기... 
                wb.Close(false, Type.Missing, Type.Missing);
                wb = null;
                ExcelApp.Quit();
            }
            catch (Exception ex)
            {
                //객체들 메모리 해제
                ReleaseExcelObject(ws);
                ReleaseExcelObject(wb);
                ReleaseExcelObject(ExcelApp);
                GC.Collect();
            }
            finally
            {
                //객체들 메모리 해제
                ReleaseExcelObject(ws);
                ReleaseExcelObject(wb);
                ReleaseExcelObject(ExcelApp);
                GC.Collect();
            }
            
        }

        private void ReleaseExcelObject(object obj)
        {
            try
            {
                if (obj != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                    obj = null;
                }
            }
            catch (Exception ex)
            {
                obj = null;
                throw ex;
            }
            finally
            {
                GC.Collect();
            }
        }

        private string[] ConvertToStringArray(System.Array ayValues)
        {

            string[] strArray = new string[ayValues.Length];

            for (int i = 1; i <= ayValues.Length; i++) 
             {
                 if (ayValues.GetValue(i, 1) == null)
                 {
                     strArray[i - 1] = "";
                 }
                 else
                 {
                     strArray[i - 1] = (string)ayValues.GetValue(i, 1).ToString();
                 }
             }
             return strArray;
        }

    }
}

 

* 예제 결과 화면

 

결과 화면

 

[C#] File Create & Delete & Read & Write 예제

 

[C#] File Create & Delete & Read & Write 예제

* C# 파일 예제 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Wind..

kdsoft-zeros.tistory.com

 

https://kdsoft-zeros.tistory.com/135

 

[C#] Excel File Print (엑셀 파일 프린트 하기)

* C# Excel File Print (엑셀 파일 프린트 하기) 예제... - 인쇄할 엑셀 파일 추가 하기... 프로젝트 클릭 -> 마우스 오른쪽 클릭 -> 추가 -> 기존 항목 선택 위 그림과 같이 모든 파일 선택 합니다. 기본 Visu..

kdsoft-zeros.tistory.com

 

반응형

+ Recent posts