반응형

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;
using System.Drawing;

namespace chapter_07
{
    class Program
    {
        static void Main(string[] args)
        {
            Application excelapp = new Application();
            Workbook wb = excelapp.Workbooks.Add();
            Worksheet ws = wb.Worksheets.Item[1];

            Range rg = ws.Range[ws.Cells[1, 1], ws.Cells[5,5]];
            rg.Value = "123";

            rg.Font.Name = "맑은고딕";
            rg.Font.Size = 20;
            rg.Font.Bold = true;
            rg.Font.Italic = true;
            
            rg.Font.Underline = true;
            rg.Font.Strikethrough = true;            
            rg.Font.Color = Color.FromArgb(51, 102, 51);

            rg.HorizontalAlignment = 3;
            rg.VerticalAlignment = 2


            wb.SaveAs(Filename:@"C:\test\555.xlsx");
            wb.Close();
            excelapp.Quit();
            Marshal.ReleaseComObject(wb);
            Marshal.ReleaseComObject(rg);
            Marshal.ReleaseComObject(excelapp);
        }
    }
}

 

 

3. 뜯어 보기

rg.Font.Name = "맑은고딕";
rg.Font.Size = 20;
rg.Font.Bold = true;
rg.Font.Italic = true;
  • rg.Font.Name : 해당 범위의 폰트를 변경한다.

  • rg.Font.Size : 해당 범위의 폰트 사이즈를 변경한다.

  • rg.Font.Bold : 해당 범위 폰트를 굵게 쓸지 여부를 결정한다.

  • rg.Font.Italic : 해당 범위 폰트를 기울일지(이탤릭체) 여부를 결정한다.

rg.Font.Underline = true;
rg.Font.Strikethrough = true;
rg.Font.Color = Color.FromArgb(51, 102, 51);
  • rg.Font.Underline : 글자에 밑줄을 그을지 설정한다.

  • rg.Font.Strikethrough : 글자에 취소선을 그을지 설정한다. (예 : 가나다)

  • rg.Font.Color : 폰트의 색상을 설정한다.

    • 앞선 포스트에서 사용한 System.Drawing을 참조하여야 Color.FromArgb를 사용 가능하다.

    • FromArgb(red, green, blue) : 각가 원하는 RGB값을 넣어 색상을 설정한다.

rg.HorizontalAlignment = 3;
rg.VerticalAlignment = 2;
  • rg.HorizontalAlignment : 선택 범위의 좌우 정렬을 설정한다.

    • 값은 2, 3, 4를 넣을 수 있다

    • 2 : 왼쪽 정렬

    • 3 : 중앙 정렬

    • 4 : 오른쪽 정렬

  • rg.VerticalAlignment : 선택 범위의 상하 정렬을 설정한다.

    • 값은 1, 2, 3을 넣을 수 있다.

    • 1 : 상단 정렬

    • 2 : 중앙 정렬

    • 3 : 하단 정렬

반응형
반응형

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;

//new
using System.Drawing;

namespace chapter_03
{
    class Program
    {
        static void Main(string[] args)
        {
            Application excelapp = new Application();
            Workbook wb = excelapp.Workbooks.Add();
            Worksheet ws = wb.Worksheets.Item[1];

            Range rg = ws.Range[ws.Cells[1, 1], ws.Cells[5,5]];
            rg.Value = "123";

            rg.RowHeight = 30;
            rg.ColumnWidth = 20;

            //외곽만
            rg.BorderAround2(Microsoft.Office.Interop.Excel.XlLineStyle.xlDash);
            rg.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;

            //있는 모든 테두리들
            rg.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlDash;
            
            //선중 가는선, 중간선, 굵은선, 점선
            rg.Borders.Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;
            rg.Interior.Color = Color.FromArgb(51, 102, 51); ;


            wb.SaveAs(Filename:@"C:\test\555.xlsx");
            wb.Close();
            excelapp.Quit();
            Marshal.ReleaseComObject(wb);
            Marshal.ReleaseComObject(excelapp);
        }
    }
}

 

3. 뜯어보기

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

using System.Drawing;
  • 기존에 사용되던 두개의 참조 외에 한가지가 추가되었다.

  • 참조 -> 어셈블리에서 System.Drawing을 찾아 추가한다.

  • 셀 색상 선택이나 다음 회에서 나올 폰트 색상 선택시 사용된다.

rg.RowHeight = 30;
rg.ColumnWidth = 20;
  • 행의 셀 너비를 30, 열의 너비를 20으로 설정한다.

rg.BorderAround2(Microsoft.Office.Interop.Excel.XlLineStyle.xlDash);
rg.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
  • rg.BorderAround2는 선택된 셀 범위전체를 기준으로 좌우상하 테두리만(외곽만) 변경한다.

    • 테두리가 XlDash선(---)으로 설정한다.

  • rg.Borders를 이용하여 원하는 곳만 변경도 가능하다.

    • _Borders[Microsoft.Office.Interop.Excel.XlBordersIndes.xlEdgeBottom]를 이용하면 하단부 테두리만 변경된다.

    • xlEdgeTop, xlEdgeLeft, xlEdgeRight 등이 있다

rg.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlDash;
  • 선택된 범위의 모든 테루리에 선 스타일을 적용한다.

rg.Borders.Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;
  • 선택 범위 내에서 선 두께를 설정한다.

* 위의 LineStyle과 Weight는 엑셀 셀 서식에서 보이는 속성값을 설정한다.(아래 그림 빨간 사각형 참조)

  따라서 가장 마지막에 설정된 한가지만 적용이 된다.

 

rg.Interior.Color = Color.FromArgb(51, 102, 51);
  • 셀의 배경색을 설정한다.

  • 위에서 참조한 System.Drawing의 Color.FromArgb를 이용하여 RGB값으로 색을 지정한다.

반응형
반응형

C#으로 엑셀 셀 선택 방법

 

1. 목표

  • 1개의 셀 선택

  • 2개 이상의 셀 범위 선택하기

  • 에러의 경우 살펴보기

 

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_03
{
    class Program
    {
        static void Main(string[] args)
        {
            Application excelapp = new Application();
            Workbook read_wb = excelapp.Workbooks.Open(Filename: @"C:\test\123.xlsx");
            Worksheet ws = read_wb.Worksheets.Item[1];


            Range rg1 = ws.Cells[1, 1];

            Range rg2 = ws.Range["A1"];

            Range rg3 = ws.Range[ws.Cells[1, 1], ws.Cells[3, 3]];


            //에러

            //Range rg2_1 = ws.Range[1, 1];
            //Range rg2_2 = ws.Range[ws.Cells[1,1]];
            //Console.WriteLine(rg3_1);


            read_wb.Close();
            excelapp.Quit();
            Marshal.ReleaseComObject(rg1);
            Marshal.ReleaseComObject(rg2);
            Marshal.ReleaseComObject(rg3);
            Marshal.ReleaseComObject(read_wb);
            Marshal.ReleaseComObject(excelapp);
        }
    }
}

 

 

3. 뜯어 보기

Range rg1 = ws.Cells[1, 1];
  • rg1이란 범위 객체에 셀을 할당한다

  • ws.Cells[1,1]은 1개의 셀만 선택할 때 사용된다.

Range rg2 = ws.Range["A1"];
  • rg2에 범위를 설정한다.

  • 위와 다르게 Ragne를 써서 "A1"이라는 엑셀의 셀 좌표 표현 방식을 그대로 사용한다.

  • "A1:C:4"와 같이 엑셀 함수에서 사용하는 표현법으로 선택도 가능하다.

Range rg3 = ws.Range[ws.Cells[1, 1], ws.Cells[3, 3]];
  • rg3의 범위를 시작 셀과 마지막셀을 이용하여 범위를 선택한다.

  • 1개의 셀을 선택할땐 Cells[1,1]을, 범위를 선택할땐 Range를 사용한다.

//Range rg2_1 = ws.Range[1, 1];
//Range rg2_2 = ws.Range[ws.Cells[1,1]];
  • 두 경우 모두 Range의 매개변수가 잘못되어 에러가 난다.

  • Range는 시작셀과 끝셀이 지정되어야만 한다.

 

 

 

 

반응형

+ Recent posts