From 480d9fb405f894daadf6dee77aae054ad8058344 Mon Sep 17 00:00:00 2001 From: HarisHashim Date: Wed, 26 Jan 2022 09:28:57 +0800 Subject: [PATCH] BAEL-5204: Change the font color of a cell with Apache POI (#11554) * BAEL-5204: First commit "Change the font color of a cell with Apache POI" * BAEL-5204: Create class and unit test * BAEL-5204: finalize unit test * BAEL-5204: fix indent * BAEL-5204: add missing excel template --- .../poi/excel/cellstyle/CellStyler.java | 26 +++++++++ .../poi/excel/cellstyle/CellStyle.xlsx | Bin 0 -> 8393 bytes .../excel/cellstyle/CellStylerUnitTest.java | 52 ++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 apache-poi/src/main/java/com/baeldung/poi/excel/cellstyle/CellStyler.java create mode 100644 apache-poi/src/main/resources/com/baeldung/poi/excel/cellstyle/CellStyle.xlsx create mode 100644 apache-poi/src/test/java/com/baeldung/poi/excel/cellstyle/CellStylerUnitTest.java diff --git a/apache-poi/src/main/java/com/baeldung/poi/excel/cellstyle/CellStyler.java b/apache-poi/src/main/java/com/baeldung/poi/excel/cellstyle/CellStyler.java new file mode 100644 index 0000000000..6d8b303fd3 --- /dev/null +++ b/apache-poi/src/main/java/com/baeldung/poi/excel/cellstyle/CellStyler.java @@ -0,0 +1,26 @@ +package com.baeldung.poi.excel.cellstyle; + +import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.Font; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.usermodel.VerticalAlignment; +import org.apache.poi.ss.usermodel.Workbook; + +public class CellStyler { + public CellStyle createWarningColor(Workbook workbook) { + CellStyle style = workbook.createCellStyle(); + + Font font = workbook.createFont(); + font.setFontName("Courier New"); + font.setBold(true); + font.setUnderline(Font.U_SINGLE); + font.setColor(HSSFColorPredefined.DARK_RED.getIndex()); + style.setFont(font); + + style.setAlignment(HorizontalAlignment.CENTER); + style.setVerticalAlignment(VerticalAlignment.CENTER); + return style; + } +} diff --git a/apache-poi/src/main/resources/com/baeldung/poi/excel/cellstyle/CellStyle.xlsx b/apache-poi/src/main/resources/com/baeldung/poi/excel/cellstyle/CellStyle.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ca9394246a706801c2db17a2ab89446c69fe505b GIT binary patch literal 8393 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 literal 0 HcmV?d00001 diff --git a/apache-poi/src/test/java/com/baeldung/poi/excel/cellstyle/CellStylerUnitTest.java b/apache-poi/src/test/java/com/baeldung/poi/excel/cellstyle/CellStylerUnitTest.java new file mode 100644 index 0000000000..074e51919a --- /dev/null +++ b/apache-poi/src/test/java/com/baeldung/poi/excel/cellstyle/CellStylerUnitTest.java @@ -0,0 +1,52 @@ +package com.baeldung.poi.excel.cellstyle; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Paths; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.junit.Before; +import org.junit.Test; + +public class CellStylerUnitTest { + private static String FILE_NAME = "com/baeldung/poi/excel/cellstyle/CellStyle.xlsx"; + private static final String NEW_FILE_NAME = "CellStyleTest_output.xlsx"; + private String fileLocation; + + @Before + public void setup() throws IOException, URISyntaxException { + fileLocation = Paths.get(ClassLoader.getSystemResource(FILE_NAME) + .toURI()) + .toString(); + } + + @Test + public void testApplyWarningColor() throws IOException { + Workbook workbook = new XSSFWorkbook(fileLocation); + Sheet sheet = workbook.getSheetAt(0); + Row row1 = sheet.createRow(0); + row1.setHeightInPoints((short) 40); + + CellStyler styler = new CellStyler(); + CellStyle style = styler.createWarningColor(workbook); + + Cell cell1 = row1.createCell(0); + cell1.setCellStyle(style); + cell1.setCellValue("Hello"); + + Cell cell2 = row1.createCell(1); + cell2.setCellStyle(style); + cell2.setCellValue("world!"); + + FileOutputStream outputStream = new FileOutputStream(NEW_FILE_NAME); + workbook.write(outputStream); + outputStream.close(); + workbook.close(); + } +}