From b1a60f46516cf64551d292c235fc4a76093c9352 Mon Sep 17 00:00:00 2001 From: mjkhan21 Date: Tue, 19 Dec 2023 16:31:27 +0900 Subject: [PATCH] =?UTF-8?q?=EC=88=AB=EC=9E=90=ED=8F=AC=EB=A7=B7=20?= =?UTF-8?q?=EC=88=98=EC=A0=95,=20CellDef=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cokr/xit/base/file/xls/XLSWriter.java | 50 ++++++++++++++++++- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/src/main/java/cokr/xit/base/file/xls/XLSWriter.java b/src/main/java/cokr/xit/base/file/xls/XLSWriter.java index 558b336..5dec4be 100644 --- a/src/main/java/cokr/xit/base/file/xls/XLSWriter.java +++ b/src/main/java/cokr/xit/base/file/xls/XLSWriter.java @@ -5,9 +5,14 @@ import java.io.OutputStream; import java.util.ArrayList; import java.util.Collections; import java.util.Date; +import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import java.util.function.Consumer; import java.util.function.Function; +import java.util.function.Supplier; +import java.util.stream.Collectors; +import java.util.stream.Stream; import org.apache.poi.ss.usermodel.BorderStyle; import org.apache.poi.ss.usermodel.CellStyle; @@ -438,7 +443,7 @@ public class XLSWriter extends XLS { * @return 숫자 스타일(오른쪽 정렬, 천단위 구분) */ public CellStyle n_nn0() { - return cellStyle(new Styler().alignment(HorizontalAlignment.RIGHT).dataFormat("#,###")); + return cellStyle(new Styler().alignment(HorizontalAlignment.RIGHT).dataFormat("#,##0")); } /**숫자 스타일(오른쪽 정렬, 천단위 구분, 소수점 2자리 표기)을 반환한다. @@ -469,10 +474,23 @@ public class XLSWriter extends XLS { return cellStyle(new Styler().dataFormat("HH:mm:ss").merge(Styler.CENTER)); } + public List header(Iterable defs, Supplier factory) { + ArrayList result = new ArrayList<>(); + + for (CellDef def: defs) { + result.add(def.label); + Styler styler = factory.get(); + styler.width(def.width); + result.add(styler); + } + + return result; + } + /**셀스타일 정보. {@link #set(CellStyle) CellStyle을 설정}하는데 사용. * @author mjkhan */ - public static class Styler { + public static class Styler { /** 빈 스타일 */ public static final Styler NONE = new Styler().seal(); /** 좌측 정렬 */ @@ -791,4 +809,32 @@ public class XLSWriter extends XLS { return this; } } + + /** + * @author mjkhan + */ + public static class CellDef { + public static final Map toMap(CellDef... defs) { + return Stream.of(defs).collect(Collectors.toMap( + def -> def.label, + def -> def, + (k1, k2) -> k1, + LinkedHashMap::new + )); + } + + private String label; + private int width; + private Object value; + + public CellDef(String label, int width, Object value) { + this.label = label; + this.width = width; + this.value = value; + } + + public Object getValue() { + return value; + } + } } \ No newline at end of file