[NPOI] ICellStyle
2019. 10. 29. 11:24ㆍC#/NPOI
반응형
C# 에서 Excel 관리 할일이 생겨서 Nuget에서 NPOI 라는 패키지를 이용했다.
처음에는 잘되고 있었는데 포퍼먼스 문제가 발생...
아 뭐가 이래 느려 했는데 처음은 아래처럼 구성했다.
public ICellStyle SET_STYLE(IWorkbook workbook, string fontname, double fontheight, short fontcolor, short backcolor, short DataFormat)
{
ICellStyle style = workbook.CreateCellStyle();
IFont font = workbook.CreateFont();
font.FontName = fontname;
font.FontHeight = fontheight;
font.Color = fontcolor;
style.Alignment = HorizontalAlignment.Center;
style.BorderBottom = BorderStyle.Thin;
style.BorderDiagonal = BorderDiagonal.None;
style.BorderLeft = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
style.BorderTop = BorderStyle.Thin;
style.BottomBorderColor = NPOI.HSSF.Util.HSSFColor.Black.Index;
style.BorderDiagonal = BorderDiagonal.None;
style.BorderDiagonalLineStyle = BorderStyle.None;
style.DataFormat = DataFormat;
style.FillForegroundColor = backcolor;
style.FillPattern = FillPattern.SolidForeground;
style.SetFont(font);
return style;
}
한셀마다 계속 style을 생성할려니 계속 느린부분이 있어진듯해서 구조를 변경했다.
위 내용을 이용해서 Dictionary에 미리 데이터를 입력한다.
Dictionary<string, ICellStyle> dic = new Dictionary<string, ICellStyle>();
dic.Add("0_49", SET_STYLE(
workbook,
sheet.GetRow(3).Cells[0].CellStyle.GetFont(workbook).FontName,
sheet.GetRow(3).Cells[0].CellStyle.GetFont(workbook).FontHeight,
HSSFColor.Black.Index,
HSSFColor.White.Index,
49));
추후 필요시 생성한것을 로드하는 방식으로 수정하자 월등히 속도가 빨라 진다.
반응형