반응형

1. Point

  • 엑셀 셀에 폰트, 색상(color), bold, italic 및 정렬을 적용
  • 스타일에 추가하여 여러 셀에 한번에 적하는 방법

 

반응형

 

 

2. 전체 코드

// 참조 추가
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;

namespace manual_NPOI_excel_IO
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var newFile = @"./dir/newbook.xlsx";

            using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
            {

                IWorkbook workbook = new XSSFWorkbook();

                // 시트 생성
                ISheet sheet1 = workbook.CreateSheet("Sheet1");



                // 셀에 적용할 스타일 생성
                var style1 = workbook.CreateCellStyle();
                style1.FillForegroundColor = HSSFColor.Blue.Index2;
                style1.FillPattern = FillPattern.SolidForeground;
                style1.Alignment = HorizontalAlignment.Center;
                style1.BorderBottom = BorderStyle.Medium;
                style1.BorderRight = BorderStyle.DashDotDot;

				
                // 폰트 설정
                IFont font1 = workbook.CreateFont();
                font1.FontName = "맑은 고딕";
                font1.Color = IndexedColors.Red.Index;
                font1.IsBold = true;
                font1.Underline = FontUnderlineType.Double;
                font1.IsItalic = true;
				
                // 앞서 설정한 셀 스타일에 폰트 추가
                style1.SetFont(font1);
                
                
                // 셀 선택 및 스타일 적용
                var cell2 = sheet1.CreateRow(0).CreateCell(0);
                cell2.CellStyle = style1;
                cell2.SetCellValue(0);



                // 작업 내용 파일에 작성 및 저장
                workbook.Write(fs);
            }
        }
    }
}
반응형
반응형

1. Point

  • 엑셀 셀 스타일을 변수로 만들어 원하는 셀에만 적용
  • 셀 색상 넣기
  • 셀 테두리 설정

 

 

반응형

 

 

2. 전체 코드

// 참조 추가
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;

namespace manual_NPOI_excel_IO
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var newFile = @"./dir/newbook.xlsx";

            using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
            {

                IWorkbook workbook = new XSSFWorkbook();
                // 시트 생성
                ISheet sheet1 = workbook.CreateSheet("Sheet1");


                // 셀에 적용할 스타일 생성
                var style1 = workbook.CreateCellStyle();
                style1.FillForegroundColor = HSSFColor.Blue.Index2;
                style1.FillPattern = FillPattern.SolidForeground;
                style1.Alignment = HorizontalAlignment.Center;
                style1.BorderBottom = BorderStyle.Medium;
                style1.BorderRight = BorderStyle.DashDotDot;

                // 스타일 적용할 셀 선택
                var cell2 = sheet1.CreateRow(0).CreateCell(0);
                cell2.CellStyle = style1;
                cell2.SetCellValue(0);


                // 작업 내용 파일에 작성 및 저장
                workbook.Write(fs);
            }
        }
    }
}
반응형
반응형

1. Point

  • NPOI 엑셀 셀 크기 설정 방법
  • NPOI 엑셀 셀 크기 자동으로 설정 

 

 

 

반응형

 

 

2. 전체 코드

// 참조 추가
using System.IO;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;

namespace manual_NPOI_excel_IO
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var newFile = @"./dir/newbook.xlsx";

            using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
            {

                IWorkbook workbook = new XSSFWorkbook();
                // 시트 생성
                ISheet sheet1 = workbook.CreateSheet("Sheet1");

				
                IRow row = sheet1.CreateRow(0);
                // 셀 높이 (point 단위)
                row.Height = 30 * 80;
                row.CreateCell(0).SetCellValue("this is content");
                // Column 크기 자동
                sheet1.AutoSizeColumn(0);


                // 작업 내용 파일에 작성 및 저장
                workbook.Write(fs);
            }
        }
    }
}
반응형
반응형

1. Point

  • 엑셀 셀 병합 방법
  • 셀 병합 후 값 넣기

 

반응형

 

 

2. 전체 코드

// 참조 추가
using System.IO;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;

namespace manual_NPOI_excel_IO
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var newFile = @"./dir/newbook.xlsx";

            using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
            {

                IWorkbook workbook = new XSSFWorkbook();
                // 시트 생성
                ISheet sheet1 = workbook.CreateSheet("Sheet1");


                // 셀 병합
                //// 시작 row, 끝 row, 시작 column, 끝 column
                sheet1.AddMergedRegion(new CellRangeAddress(0, 0, 0, 10));
				
                // 병합된 셀에 값 넣기 (항상 병합된 셀 중 첫칸 기준으로 데이터를 넣어야 한다)
                sheet1.CreateRow(0).CreateCell(0).SetCellValue("Cell Merge");
                // 병합된 셀 중간에 값을 넣으면 아무값도 써지지 않는다
                sheet1.CreateRow(1).CreateCell(3).SetCellValue("Cell Merge");


                // 작업 내용 파일에 작성 및 저장
                workbook.Write(fs);
            }
        }
    }
}
반응형
반응형

1. Point

  • 셀에 엑셀 함수를 넣어 계산하기

 

 

 

반응형

 

 

 

2. 전체 코드

// 참조 추가
using System.IO;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;

namespace manual_NPOI_excel_IO
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var newFile = @"./dir/newbook.xlsx";

            using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
            {

                IWorkbook workbook = new XSSFWorkbook();

                // 시트 생성
                ISheet sheet1 = workbook.CreateSheet("Sheet1");


                // A1 ~ A11까지 0~10까지 숫자 넣기
                for (int i = 0; i < 11; i++)
                {
                    sheet1.CreateRow(i).CreateCell(0).SetCellValue(i);
                }


                // 셀에 함수 넣기
                // 엑셀에서 사용되는 함수에 앞에 '='만 빼고 넣으면 된다
                sheet1.CreateRow(11).CreateCell(0).SetCellFormula("sum(A1:A11)");


                // 작업 내용 파일에 작성 및 저장
                workbook.Write(fs);
            }
        }
    }
}
반응형
반응형

1. Point

  • 생성한 엑셀 시트의 셀에 값 넣기
  • 반복문을 이용한 셀 값넣기
  • 변수를 이용한 셀 값 넣기

 

 

반응형

 

 

2. 전체 코드

// 참조 추가
using System.IO;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;

namespace manual_NPOI_excel_IO
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var newFile = @"./dir/newbook.core.xlsx";

            using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
            {

                IWorkbook workbook = new XSSFWorkbook();
                // 시트 생성
                ISheet sheet1 = workbook.CreateSheet("Sheet1");


				// 셀에 값 넣기
                var cell_1 = sheet1.CreateRow(0).CreateCell(0);

                cell_1.SetCellValue("Cell_A0");

                for (int i = 1; i < 11; i++)
                {
                    sheet1.CreateRow(i).CreateCell(0).SetCellValue("Cell_A" + i + " (for loop)");
                }

                // 작업 내용 파일에 작성 및 저장
                workbook.Write(fs);
            }
        }
    }
}
반응형
반응형

1. Point

  • 사전 준비 : '참조 - NuGet' 에서 NPOI를 설치
  • 엑셀 파일 생성
  • 워크 시트 생성
  •  

 

반응형

 

 

2. 전체 코드

// 참조 추가
using System.IO;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.XSSF.UserModel;

namespace manual_NPOI_excel_IO
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var newFile = @"./dir/newbook.core.xlsx";

            using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
            {
				// 워크북 생성
                IWorkbook workbook = new XSSFWorkbook();

                // 시트 생성
                ISheet sheet1 = workbook.CreateSheet("Sheet1");

                // 작업 내용 파일에 작성 및 저장
                workbook.Write(fs);
            }
        }
    }
}
반응형
반응형

1. 사용자가 많다

내가 라이브러리 선택하는 요소 중 가장 중요한 요소이다.

사용자가 많으면 그만큼 문제가 발생했을때 쉽게 검색과 대처가 가능하다.

 

 

 

반응형

 

2. 편의성

Microsoft.Office.Interop.Excel은 안정적이지 않았다.

가장 큰 문제는 파일 작성 후 excel 프로세스가 닫히지 않는 문제점

강제로 Marshal.ReleaseComObject()로 다 닫아줘야 하는데 코드가 길어지다보면 안되는 경우가 많이 발생한다.

또한 실행된 모든 excel을 종료하다보니 보고 있던 엑셀파일마저 닫혀버린다

그 상태로 다시 코드가 실행되면 또 다른 excel 프로세스가 실행된다.

 

NPOI는 경험상 아직 이런 문제는 발생하지 않았다.

많이 쓰는 오픈소스인데 이런 이슈가 없는것을 보면 없다고 봐도 무방할듯 하다.

반응형

+ Recent posts