From 67e9dc8187222f9746889f090cef492425ab1fce Mon Sep 17 00:00:00 2001 From: STS Date: Sun, 28 Jun 2020 20:33:10 +0200 Subject: [PATCH 01/10] add excel formula --- excelformula/.gitignore | 34 +++++++++++ excelformula/pom.xml | 57 +++++++++++++++++++ .../poi/excelformula/ExcelFormula.java | 36 ++++++++++++ .../excelformula/ExcelformulaApplication.java | 13 +++++ .../src/main/resources/application.properties | 1 + .../ExcelformulaApplicationTests.java | 38 +++++++++++++ 6 files changed, 179 insertions(+) create mode 100644 excelformula/.gitignore create mode 100644 excelformula/pom.xml create mode 100644 excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelFormula.java create mode 100644 excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelformulaApplication.java create mode 100644 excelformula/src/main/resources/application.properties create mode 100644 excelformula/src/test/java/com/bealdung/poi/excelformula/ExcelformulaApplicationTests.java diff --git a/excelformula/.gitignore b/excelformula/.gitignore new file mode 100644 index 0000000000..719e322c1d --- /dev/null +++ b/excelformula/.gitignore @@ -0,0 +1,34 @@ +HELP.md +mvnw +mvnw.cmd +.mvn +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/** +!**/src/test/** + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ + +### VS Code ### +.vscode/ diff --git a/excelformula/pom.xml b/excelformula/pom.xml new file mode 100644 index 0000000000..4ea65b5e57 --- /dev/null +++ b/excelformula/pom.xml @@ -0,0 +1,57 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.3.1.RELEASE + + + com.bealdung.poi + excelformula + 0.0.1-SNAPSHOT + excelformula + Demo project for Spring Boot + + 11 + 4.1.2 + 4.13 + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + + org.apache.poi + poi-ooxml + ${poi-ooxml.version} + + + junit + junit + ${junit.version} + test + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelFormula.java b/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelFormula.java new file mode 100644 index 0000000000..1e2fa5acfe --- /dev/null +++ b/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelFormula.java @@ -0,0 +1,36 @@ +package com.bealdung.poi.excelformula; + +import org.apache.poi.ss.usermodel.CellValue; +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.util.List; + +@Component +public class ExcelFormula { + XSSFWorkbook excel; + public XSSFSheet inserData(List dataList) { + excel = new XSSFWorkbook(); + XSSFSheet sheet = excel.createSheet(); + int rowNum =0 ; + for (Integer data : dataList){ + sheet.createRow(rowNum++).createCell(0).setCellValue(data); + } + return sheet; + } + public double setFormula(String formula) throws IOException { + XSSFSheet sheet = excel.getSheetAt(0); + int lastCellNum = sheet.getRow(0).getLastCellNum(); + XSSFCell formulaCell = sheet.getRow(0).createCell(lastCellNum + 1); + formulaCell.setCellFormula(formula); + XSSFFormulaEvaluator formulaEvaluator = excel.getCreationHelper().createFormulaEvaluator(); + CellValue evaluate = formulaEvaluator.evaluate(formulaCell); + if(excel != null) + excel.close(); + return evaluate.getNumberValue(); + } +} diff --git a/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelformulaApplication.java b/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelformulaApplication.java new file mode 100644 index 0000000000..b857bd4266 --- /dev/null +++ b/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelformulaApplication.java @@ -0,0 +1,13 @@ +package com.bealdung.poi.excelformula; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ExcelformulaApplication { + + public static void main(String[] args) { + SpringApplication.run(ExcelformulaApplication.class, args); + } + +} diff --git a/excelformula/src/main/resources/application.properties b/excelformula/src/main/resources/application.properties new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/excelformula/src/main/resources/application.properties @@ -0,0 +1 @@ + diff --git a/excelformula/src/test/java/com/bealdung/poi/excelformula/ExcelformulaApplicationTests.java b/excelformula/src/test/java/com/bealdung/poi/excelformula/ExcelformulaApplicationTests.java new file mode 100644 index 0000000000..c2385911d0 --- /dev/null +++ b/excelformula/src/test/java/com/bealdung/poi/excelformula/ExcelformulaApplicationTests.java @@ -0,0 +1,38 @@ +package com.bealdung.poi.excelformula; + +import org.apache.poi.ss.util.CellReference; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.junit.Assert; +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.io.IOException; +import java.util.Arrays; +import java.util.List; + +@RunWith(SpringRunner.class) +@SpringBootTest +class ExcelformulaApplicationTests { + @Autowired + private ExcelFormula excelFormula; + + @Test + void givenExcelData_whenSetAndEvaluateFormula() throws IOException { + List data = Arrays.asList(2, 5, 10, 15, 7, 9); + XSSFSheet sheet = excelFormula.inserData(data); + int result = 0; + for (int row = 0; row <= sheet.getLastRowNum(); row++) { + result += sheet.getRow(row).getCell(0).getNumericCellValue(); + } + String colName = CellReference.convertNumToColString(0); + String startCell = colName + 1; + String stopCell = colName + (sheet.getLastRowNum() + 1); + String sumFormula = String.format("SUM(%s:%s)", startCell, stopCell); + int resultValue = (int) excelFormula.setFormula(sumFormula); + Assert.assertEquals("The results are the same!", resultValue , result); + } + +} From ecde6b58a83eb964a66e3cf5e9ebef7428018e05 Mon Sep 17 00:00:00 2001 From: STS Date: Sun, 28 Jun 2020 21:12:09 +0200 Subject: [PATCH 02/10] create README.md file --- excelformula/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 excelformula/README.md diff --git a/excelformula/README.md b/excelformula/README.md new file mode 100644 index 0000000000..86ddaba413 --- /dev/null +++ b/excelformula/README.md @@ -0,0 +1,8 @@ +## Apache POI + +This module contains articles about Apache POI + +### Relevant Articles: +- [Working with Microsoft Excel in Java](https://www.baeldung.com/java-microsoft-excel) +- [Read Excel Cell Value Rather Than Formula With Apache POI](https://www.baeldung.com/apache-poi-read-cell-value-formula) +- [Upload and Display Excel Files with Spring MVC](https://www.baeldung.com/spring-mvc-excel-files) From 12eb8523493e790d2cb232f902035e290fc0a097 Mon Sep 17 00:00:00 2001 From: STS Date: Mon, 29 Jun 2020 14:07:18 +0200 Subject: [PATCH 03/10] remove and add file --- {excelformula => apache-poi/excelformula}/.gitignore | 0 {excelformula => apache-poi/excelformula}/pom.xml | 0 .../src/main/java/com/bealdung/poi/excelformula/ExcelFormula.java | 0 .../com/bealdung/poi/excelformula/ExcelformulaApplication.java | 0 .../excelformula}/src/main/resources/application.properties | 0 .../bealdung/poi/excelformula/ExcelformulaApplicationTests.java | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename {excelformula => apache-poi/excelformula}/.gitignore (100%) rename {excelformula => apache-poi/excelformula}/pom.xml (100%) rename {excelformula => apache-poi/excelformula}/src/main/java/com/bealdung/poi/excelformula/ExcelFormula.java (100%) rename {excelformula => apache-poi/excelformula}/src/main/java/com/bealdung/poi/excelformula/ExcelformulaApplication.java (100%) rename {excelformula => apache-poi/excelformula}/src/main/resources/application.properties (100%) rename {excelformula => apache-poi/excelformula}/src/test/java/com/bealdung/poi/excelformula/ExcelformulaApplicationTests.java (100%) diff --git a/excelformula/.gitignore b/apache-poi/excelformula/.gitignore similarity index 100% rename from excelformula/.gitignore rename to apache-poi/excelformula/.gitignore diff --git a/excelformula/pom.xml b/apache-poi/excelformula/pom.xml similarity index 100% rename from excelformula/pom.xml rename to apache-poi/excelformula/pom.xml diff --git a/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelFormula.java b/apache-poi/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelFormula.java similarity index 100% rename from excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelFormula.java rename to apache-poi/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelFormula.java diff --git a/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelformulaApplication.java b/apache-poi/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelformulaApplication.java similarity index 100% rename from excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelformulaApplication.java rename to apache-poi/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelformulaApplication.java diff --git a/excelformula/src/main/resources/application.properties b/apache-poi/excelformula/src/main/resources/application.properties similarity index 100% rename from excelformula/src/main/resources/application.properties rename to apache-poi/excelformula/src/main/resources/application.properties diff --git a/excelformula/src/test/java/com/bealdung/poi/excelformula/ExcelformulaApplicationTests.java b/apache-poi/excelformula/src/test/java/com/bealdung/poi/excelformula/ExcelformulaApplicationTests.java similarity index 100% rename from excelformula/src/test/java/com/bealdung/poi/excelformula/ExcelformulaApplicationTests.java rename to apache-poi/excelformula/src/test/java/com/bealdung/poi/excelformula/ExcelformulaApplicationTests.java From 8f22ea5d36d35cd990d3fdf7b561b77add9278c5 Mon Sep 17 00:00:00 2001 From: STS Date: Fri, 3 Jul 2020 23:56:52 +0200 Subject: [PATCH 04/10] change files location --- apache-poi/excelformula/.gitignore | 34 ----------- apache-poi/excelformula/pom.xml | 57 ------------------- .../excelformula/ExcelformulaApplication.java | 13 ----- .../src/main/resources/application.properties | 1 - .../poi/excel/setFormula}/ExcelFormula.java | 4 +- .../setFormula/ExcelFormulaUnitTest.java} | 15 +---- 6 files changed, 4 insertions(+), 120 deletions(-) delete mode 100644 apache-poi/excelformula/.gitignore delete mode 100644 apache-poi/excelformula/pom.xml delete mode 100644 apache-poi/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelformulaApplication.java delete mode 100644 apache-poi/excelformula/src/main/resources/application.properties rename apache-poi/{excelformula/src/main/java/com/bealdung/poi/excelformula => src/main/java/com/baeldung/poi/excel/setFormula}/ExcelFormula.java (90%) rename apache-poi/{excelformula/src/test/java/com/bealdung/poi/excelformula/ExcelformulaApplicationTests.java => src/test/java/com/baeldung/poi/excel/setFormula/ExcelFormulaUnitTest.java} (71%) diff --git a/apache-poi/excelformula/.gitignore b/apache-poi/excelformula/.gitignore deleted file mode 100644 index 719e322c1d..0000000000 --- a/apache-poi/excelformula/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -HELP.md -mvnw -mvnw.cmd -.mvn -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/** -!**/src/test/** - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ - -### VS Code ### -.vscode/ diff --git a/apache-poi/excelformula/pom.xml b/apache-poi/excelformula/pom.xml deleted file mode 100644 index 4ea65b5e57..0000000000 --- a/apache-poi/excelformula/pom.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 2.3.1.RELEASE - - - com.bealdung.poi - excelformula - 0.0.1-SNAPSHOT - excelformula - Demo project for Spring Boot - - 11 - 4.1.2 - 4.13 - - - - org.springframework.boot - spring-boot-starter - - - org.springframework.boot - spring-boot-starter-test - test - - - org.junit.vintage - junit-vintage-engine - - - - - org.apache.poi - poi-ooxml - ${poi-ooxml.version} - - - junit - junit - ${junit.version} - test - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - diff --git a/apache-poi/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelformulaApplication.java b/apache-poi/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelformulaApplication.java deleted file mode 100644 index b857bd4266..0000000000 --- a/apache-poi/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelformulaApplication.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.bealdung.poi.excelformula; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class ExcelformulaApplication { - - public static void main(String[] args) { - SpringApplication.run(ExcelformulaApplication.class, args); - } - -} diff --git a/apache-poi/excelformula/src/main/resources/application.properties b/apache-poi/excelformula/src/main/resources/application.properties deleted file mode 100644 index 8b13789179..0000000000 --- a/apache-poi/excelformula/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ - diff --git a/apache-poi/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelFormula.java b/apache-poi/src/main/java/com/baeldung/poi/excel/setFormula/ExcelFormula.java similarity index 90% rename from apache-poi/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelFormula.java rename to apache-poi/src/main/java/com/baeldung/poi/excel/setFormula/ExcelFormula.java index 1e2fa5acfe..7bd8d8a035 100644 --- a/apache-poi/excelformula/src/main/java/com/bealdung/poi/excelformula/ExcelFormula.java +++ b/apache-poi/src/main/java/com/baeldung/poi/excel/setFormula/ExcelFormula.java @@ -1,16 +1,14 @@ -package com.bealdung.poi.excelformula; +package com.baeldung.poi.excel.setFormula; import org.apache.poi.ss.usermodel.CellValue; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.springframework.stereotype.Component; import java.io.IOException; import java.util.List; -@Component public class ExcelFormula { XSSFWorkbook excel; public XSSFSheet inserData(List dataList) { diff --git a/apache-poi/excelformula/src/test/java/com/bealdung/poi/excelformula/ExcelformulaApplicationTests.java b/apache-poi/src/test/java/com/baeldung/poi/excel/setFormula/ExcelFormulaUnitTest.java similarity index 71% rename from apache-poi/excelformula/src/test/java/com/bealdung/poi/excelformula/ExcelformulaApplicationTests.java rename to apache-poi/src/test/java/com/baeldung/poi/excel/setFormula/ExcelFormulaUnitTest.java index c2385911d0..8daf311149 100644 --- a/apache-poi/excelformula/src/test/java/com/bealdung/poi/excelformula/ExcelformulaApplicationTests.java +++ b/apache-poi/src/test/java/com/baeldung/poi/excel/setFormula/ExcelFormulaUnitTest.java @@ -1,26 +1,18 @@ -package com.bealdung.poi.excelformula; +package com.baeldung.poi.excel.setFormula; import org.apache.poi.ss.util.CellReference; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.junit.Assert; import org.junit.jupiter.api.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; import java.io.IOException; import java.util.Arrays; import java.util.List; -@RunWith(SpringRunner.class) -@SpringBootTest -class ExcelformulaApplicationTests { - @Autowired - private ExcelFormula excelFormula; - +class ExcelFormulaUnitTest { @Test void givenExcelData_whenSetAndEvaluateFormula() throws IOException { + ExcelFormula excelFormula = new ExcelFormula(); List data = Arrays.asList(2, 5, 10, 15, 7, 9); XSSFSheet sheet = excelFormula.inserData(data); int result = 0; @@ -34,5 +26,4 @@ class ExcelformulaApplicationTests { int resultValue = (int) excelFormula.setFormula(sumFormula); Assert.assertEquals("The results are the same!", resultValue , result); } - } From 3e31cb49b16682206ba189db0233d1e5bc0b43fd Mon Sep 17 00:00:00 2001 From: STS Date: Sat, 11 Jul 2020 10:31:02 +0200 Subject: [PATCH 05/10] changes after adding excel file --- .../poi/excel/setFormula/ExcelFormula.java | 32 +++++------- .../src/main/resources/SetFormulaTest.xlsx | Bin 0 -> 8014 bytes .../setFormula/ExcelFormulaUnitTest.java | 46 +++++++++++++----- 3 files changed, 45 insertions(+), 33 deletions(-) create mode 100644 apache-poi/src/main/resources/SetFormulaTest.xlsx diff --git a/apache-poi/src/main/java/com/baeldung/poi/excel/setFormula/ExcelFormula.java b/apache-poi/src/main/java/com/baeldung/poi/excel/setFormula/ExcelFormula.java index 7bd8d8a035..8b1ca5a89a 100644 --- a/apache-poi/src/main/java/com/baeldung/poi/excel/setFormula/ExcelFormula.java +++ b/apache-poi/src/main/java/com/baeldung/poi/excel/setFormula/ExcelFormula.java @@ -1,34 +1,26 @@ package com.baeldung.poi.excel.setFormula; -import org.apache.poi.ss.usermodel.CellValue; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; -import java.util.List; public class ExcelFormula { - XSSFWorkbook excel; - public XSSFSheet inserData(List dataList) { - excel = new XSSFWorkbook(); - XSSFSheet sheet = excel.createSheet(); - int rowNum =0 ; - for (Integer data : dataList){ - sheet.createRow(rowNum++).createCell(0).setCellValue(data); - } - return sheet; - } - public double setFormula(String formula) throws IOException { - XSSFSheet sheet = excel.getSheetAt(0); + public double setFormula(String fileLocation, XSSFWorkbook wb, String formula) throws IOException { + XSSFSheet sheet = wb.getSheetAt(0); int lastCellNum = sheet.getRow(0).getLastCellNum(); - XSSFCell formulaCell = sheet.getRow(0).createCell(lastCellNum + 1); + XSSFCell formulaCell = sheet.getRow(0).createCell(lastCellNum); formulaCell.setCellFormula(formula); - XSSFFormulaEvaluator formulaEvaluator = excel.getCreationHelper().createFormulaEvaluator(); - CellValue evaluate = formulaEvaluator.evaluate(formulaCell); - if(excel != null) - excel.close(); - return evaluate.getNumberValue(); + XSSFFormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator(); + formulaEvaluator.evaluateFormulaCell(formulaCell); + FileOutputStream fileOut = new FileOutputStream(new File(fileLocation)); + wb.write(fileOut); + wb.close(); + fileOut.close(); + return formulaCell.getNumericCellValue(); } } diff --git a/apache-poi/src/main/resources/SetFormulaTest.xlsx b/apache-poi/src/main/resources/SetFormulaTest.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a0fe73f0ebe74ad3ca9020e685c4a6f0564687e5 GIT binary patch literal 8014 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 B-9P{U literal 0 HcmV?d00001 diff --git a/apache-poi/src/test/java/com/baeldung/poi/excel/setFormula/ExcelFormulaUnitTest.java b/apache-poi/src/test/java/com/baeldung/poi/excel/setFormula/ExcelFormulaUnitTest.java index 8daf311149..990b93fcbb 100644 --- a/apache-poi/src/test/java/com/baeldung/poi/excel/setFormula/ExcelFormulaUnitTest.java +++ b/apache-poi/src/test/java/com/baeldung/poi/excel/setFormula/ExcelFormulaUnitTest.java @@ -2,28 +2,48 @@ package com.baeldung.poi.excel.setFormula; import org.apache.poi.ss.util.CellReference; import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.junit.Assert; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; -import java.util.Arrays; -import java.util.List; +import java.net.URISyntaxException; +import java.nio.file.Paths; class ExcelFormulaUnitTest { + private static String FILE_NAME = "SetFormulaTest.xlsx"; + private String fileLocation; + private ExcelFormula excelFormula; + + @BeforeEach + public void setup() throws URISyntaxException { + fileLocation = Paths.get(ClassLoader.getSystemResource(FILE_NAME).toURI()).toString(); + excelFormula = new ExcelFormula(); + } + @Test void givenExcelData_whenSetAndEvaluateFormula() throws IOException { - ExcelFormula excelFormula = new ExcelFormula(); - List data = Arrays.asList(2, 5, 10, 15, 7, 9); - XSSFSheet sheet = excelFormula.inserData(data); - int result = 0; + FileInputStream inputStream = new FileInputStream(new File(fileLocation)); + XSSFWorkbook wb = new XSSFWorkbook(inputStream); + XSSFSheet sheet = wb.getSheetAt(0); + double resultColumnA = 0; + double resultColumnB = 0; for (int row = 0; row <= sheet.getLastRowNum(); row++) { - result += sheet.getRow(row).getCell(0).getNumericCellValue(); + resultColumnA += sheet.getRow(row).getCell(0).getNumericCellValue(); + resultColumnB += sheet.getRow(row).getCell(1).getNumericCellValue(); } - String colName = CellReference.convertNumToColString(0); - String startCell = colName + 1; - String stopCell = colName + (sheet.getLastRowNum() + 1); - String sumFormula = String.format("SUM(%s:%s)", startCell, stopCell); - int resultValue = (int) excelFormula.setFormula(sumFormula); - Assert.assertEquals("The results are the same!", resultValue , result); + String colNameA = CellReference.convertNumToColString(0); + String colNameB = CellReference.convertNumToColString(1); + String startCellA = colNameA + 1; + String stopCellA = colNameA + (sheet.getLastRowNum() + 1); + String sumFormulaForColumnA = String.format("SUM(%s:%s)", startCellA, stopCellA); + String startCellB = colNameB + 1; + String stopCellB = colNameB + (sheet.getLastRowNum() + 1); + String sumFormulaForColumnB = String.format("SUM(%s:%s)", startCellB, stopCellB); + double resultValue = excelFormula.setFormula(fileLocation, wb, sumFormulaForColumnA + "-" + sumFormulaForColumnB); + Assert.assertEquals(resultValue, resultColumnA - resultColumnB, 0d); } } From 9b7caf3118b9b7b051fbed8f9f5b6a874996c876 Mon Sep 17 00:00:00 2001 From: STS Date: Sun, 19 Jul 2020 10:15:37 +0200 Subject: [PATCH 06/10] change excel file direcory --- .../{setFormula => setformula}/ExcelFormula.java | 2 +- .../poi/excel/setformula}/SetFormulaTest.xlsx | Bin .../ExcelFormulaUnitTest.java | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) rename apache-poi/src/main/java/com/baeldung/poi/excel/{setFormula => setformula}/ExcelFormula.java (93%) rename apache-poi/src/main/resources/{ => com/bealdung/poi/excel/setformula}/SetFormulaTest.xlsx (100%) rename apache-poi/src/test/java/com/baeldung/poi/excel/{setFormula => setformula}/ExcelFormulaUnitTest.java (93%) diff --git a/apache-poi/src/main/java/com/baeldung/poi/excel/setFormula/ExcelFormula.java b/apache-poi/src/main/java/com/baeldung/poi/excel/setformula/ExcelFormula.java similarity index 93% rename from apache-poi/src/main/java/com/baeldung/poi/excel/setFormula/ExcelFormula.java rename to apache-poi/src/main/java/com/baeldung/poi/excel/setformula/ExcelFormula.java index 8b1ca5a89a..f5179b19c9 100644 --- a/apache-poi/src/main/java/com/baeldung/poi/excel/setFormula/ExcelFormula.java +++ b/apache-poi/src/main/java/com/baeldung/poi/excel/setformula/ExcelFormula.java @@ -1,4 +1,4 @@ -package com.baeldung.poi.excel.setFormula; +package com.baeldung.poi.excel.setformula; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator; diff --git a/apache-poi/src/main/resources/SetFormulaTest.xlsx b/apache-poi/src/main/resources/com/bealdung/poi/excel/setformula/SetFormulaTest.xlsx similarity index 100% rename from apache-poi/src/main/resources/SetFormulaTest.xlsx rename to apache-poi/src/main/resources/com/bealdung/poi/excel/setformula/SetFormulaTest.xlsx diff --git a/apache-poi/src/test/java/com/baeldung/poi/excel/setFormula/ExcelFormulaUnitTest.java b/apache-poi/src/test/java/com/baeldung/poi/excel/setformula/ExcelFormulaUnitTest.java similarity index 93% rename from apache-poi/src/test/java/com/baeldung/poi/excel/setFormula/ExcelFormulaUnitTest.java rename to apache-poi/src/test/java/com/baeldung/poi/excel/setformula/ExcelFormulaUnitTest.java index 990b93fcbb..45314519d4 100644 --- a/apache-poi/src/test/java/com/baeldung/poi/excel/setFormula/ExcelFormulaUnitTest.java +++ b/apache-poi/src/test/java/com/baeldung/poi/excel/setformula/ExcelFormulaUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.poi.excel.setFormula; +package com.baeldung.poi.excel.setformula; import org.apache.poi.ss.util.CellReference; import org.apache.poi.xssf.usermodel.XSSFSheet; @@ -14,7 +14,7 @@ import java.net.URISyntaxException; import java.nio.file.Paths; class ExcelFormulaUnitTest { - private static String FILE_NAME = "SetFormulaTest.xlsx"; + private static String FILE_NAME = "com/bealdung/poi/excel/setformula/SetFormulaTest.xlsx"; private String fileLocation; private ExcelFormula excelFormula; From 48ea32d583dd5fd5d45aa60516476c3e2096d300 Mon Sep 17 00:00:00 2001 From: STS Date: Sun, 26 Jul 2020 20:01:42 +0200 Subject: [PATCH 07/10] change test class name, add blank line and swap assert method parameter --- .../baeldung/poi/excel/setformula/ExcelFormulaUnitTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apache-poi/src/test/java/com/baeldung/poi/excel/setformula/ExcelFormulaUnitTest.java b/apache-poi/src/test/java/com/baeldung/poi/excel/setformula/ExcelFormulaUnitTest.java index 45314519d4..b3f6949216 100644 --- a/apache-poi/src/test/java/com/baeldung/poi/excel/setformula/ExcelFormulaUnitTest.java +++ b/apache-poi/src/test/java/com/baeldung/poi/excel/setformula/ExcelFormulaUnitTest.java @@ -25,7 +25,7 @@ class ExcelFormulaUnitTest { } @Test - void givenExcelData_whenSetAndEvaluateFormula() throws IOException { + void givenExcelData_whenSetFormula_thenSuccess() throws IOException { FileInputStream inputStream = new FileInputStream(new File(fileLocation)); XSSFWorkbook wb = new XSSFWorkbook(inputStream); XSSFSheet sheet = wb.getSheetAt(0); @@ -43,7 +43,9 @@ class ExcelFormulaUnitTest { String startCellB = colNameB + 1; String stopCellB = colNameB + (sheet.getLastRowNum() + 1); String sumFormulaForColumnB = String.format("SUM(%s:%s)", startCellB, stopCellB); + double resultValue = excelFormula.setFormula(fileLocation, wb, sumFormulaForColumnA + "-" + sumFormulaForColumnB); - Assert.assertEquals(resultValue, resultColumnA - resultColumnB, 0d); + + Assert.assertEquals(resultColumnA - resultColumnB, resultValue, 0d); } } From 78d44e5a6010aecdb209855f1854ad017b2ac89c Mon Sep 17 00:00:00 2001 From: STS Date: Mon, 27 Jul 2020 10:07:30 +0200 Subject: [PATCH 08/10] change baeldung spell --- .../poi/excel/setformula/SetFormulaTest.xlsx | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename apache-poi/src/main/resources/com/{bealdung => baeldung}/poi/excel/setformula/SetFormulaTest.xlsx (100%) diff --git a/apache-poi/src/main/resources/com/bealdung/poi/excel/setformula/SetFormulaTest.xlsx b/apache-poi/src/main/resources/com/baeldung/poi/excel/setformula/SetFormulaTest.xlsx similarity index 100% rename from apache-poi/src/main/resources/com/bealdung/poi/excel/setformula/SetFormulaTest.xlsx rename to apache-poi/src/main/resources/com/baeldung/poi/excel/setformula/SetFormulaTest.xlsx From a0bfc4c72a95983736c8bbf226bfa22ae24795a3 Mon Sep 17 00:00:00 2001 From: STS Date: Tue, 28 Jul 2020 14:23:08 +0200 Subject: [PATCH 09/10] change address --- .../com/baeldung/poi/excel/setformula/ExcelFormulaUnitTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apache-poi/src/test/java/com/baeldung/poi/excel/setformula/ExcelFormulaUnitTest.java b/apache-poi/src/test/java/com/baeldung/poi/excel/setformula/ExcelFormulaUnitTest.java index b3f6949216..fa5baa37fa 100644 --- a/apache-poi/src/test/java/com/baeldung/poi/excel/setformula/ExcelFormulaUnitTest.java +++ b/apache-poi/src/test/java/com/baeldung/poi/excel/setformula/ExcelFormulaUnitTest.java @@ -14,7 +14,7 @@ import java.net.URISyntaxException; import java.nio.file.Paths; class ExcelFormulaUnitTest { - private static String FILE_NAME = "com/bealdung/poi/excel/setformula/SetFormulaTest.xlsx"; + private static String FILE_NAME = "com/baeldung/poi/excel/setformula/SetFormulaTest.xlsx"; private String fileLocation; private ExcelFormula excelFormula; From 011b56d158f8bfa4b9bfc34e3e7a90975e5491b9 Mon Sep 17 00:00:00 2001 From: STS Date: Tue, 28 Jul 2020 20:17:02 +0200 Subject: [PATCH 10/10] Trigger Test