From 8fe5a2ac727031afc043b89839844ff4fb4d5a97 Mon Sep 17 00:00:00 2001 From: lor6 Date: Fri, 17 Feb 2017 17:06:34 +0200 Subject: [PATCH] Bael 682 (#1124) * upload, read excel files with mvc * formatting * add excel files * update excel files --- spring-mvc-java/persons.xls | Bin 0 -> 33792 bytes spring-mvc-java/persons.xlsx | Bin 0 -> 13514 bytes spring-mvc-java/pom.xml | 16 -- .../com/baeldung/excel/ExcelPOIHelper.java | 264 +++++++++++------- .../java/com/baeldung/excel/JExcelHelper.java | 82 ------ .../main/java/com/baeldung/excel/MyCell.java | 57 ++++ .../baeldung/spring/web/config/WebConfig.java | 5 - .../web/controller/ExcelController.java | 50 +--- .../src/main/webapp/WEB-INF/view/excel.jsp | 80 +++--- 9 files changed, 254 insertions(+), 300 deletions(-) create mode 100644 spring-mvc-java/persons.xls create mode 100644 spring-mvc-java/persons.xlsx delete mode 100644 spring-mvc-java/src/main/java/com/baeldung/excel/JExcelHelper.java create mode 100644 spring-mvc-java/src/main/java/com/baeldung/excel/MyCell.java diff --git a/spring-mvc-java/persons.xls b/spring-mvc-java/persons.xls new file mode 100644 index 0000000000000000000000000000000000000000..ea270f69cc8eb16b866db0414dde14c23ae9d365 GIT binary patch literal 33792 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 literal 0 HcmV?d00001 diff --git a/spring-mvc-java/persons.xlsx b/spring-mvc-java/persons.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1f58606532f81e6d03575f4e127b841c31a61304 GIT binary patch literal 13514 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 WNJ9Xf__szs0^lQ%2eQn+UHu<^-Hi7D literal 0 HcmV?d00001 diff --git a/spring-mvc-java/pom.xml b/spring-mvc-java/pom.xml index 9513c81064..ef18cef3e0 100644 --- a/spring-mvc-java/pom.xml +++ b/spring-mvc-java/pom.xml @@ -161,26 +161,11 @@ - - org.apache.poi - poi - ${poi.version} - org.apache.poi poi-ooxml ${poi.version} - - org.apache.poi - poi-ooxml-schemas - ${poi.version} - - - org.jxls - jxls-jexcel - ${jexcel.version} - @@ -395,7 +380,6 @@ 3.16-beta1 - 1.0.6 diff --git a/spring-mvc-java/src/main/java/com/baeldung/excel/ExcelPOIHelper.java b/spring-mvc-java/src/main/java/com/baeldung/excel/ExcelPOIHelper.java index 5cf74aff63..e3658e8f89 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/excel/ExcelPOIHelper.java +++ b/spring-mvc-java/src/main/java/com/baeldung/excel/ExcelPOIHelper.java @@ -1,140 +1,188 @@ package com.baeldung.excel; import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.CellType; -import org.apache.poi.ss.usermodel.CellStyle; -import org.apache.poi.ss.usermodel.IndexedColors; -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.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFCellStyle; +import org.apache.poi.xssf.usermodel.XSSFColor; import org.apache.poi.xssf.usermodel.XSSFFont; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFCellStyle; +import org.apache.poi.hssf.usermodel.HSSFFont; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.DateUtil; -import org.apache.poi.ss.usermodel.FillPatternType; + import java.io.File; -import java.io.FileOutputStream; import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; import java.util.Map; import java.util.HashMap; import java.util.ArrayList; -import org.springframework.stereotype.Service; +import java.util.List; -@Service public class ExcelPOIHelper { - public Map> readExcel(String fileLocation) throws IOException { + public Map> readExcel(String fileLocation) throws IOException { - Map> data = new HashMap>(); - FileInputStream file = new FileInputStream(new File(fileLocation)); - Workbook workbook = new XSSFWorkbook(file); - Sheet sheet = workbook.getSheetAt(0); - int i = 0; - for (Row row : sheet) { - data.put(i, new ArrayList()); - for (Cell cell : row) { - switch (cell.getCellTypeEnum()) { - case STRING: - data.get(i) - .add(cell.getRichStringCellValue() - .getString()); - break; - case NUMERIC: - if (DateUtil.isCellDateFormatted(cell)) { - data.get(i) - .add(cell.getDateCellValue() + ""); - } else { - data.get(i) - .add(cell.getNumericCellValue() + ""); - } - break; - case BOOLEAN: - data.get(i) - .add(cell.getBooleanCellValue() + ""); - break; - case FORMULA: - data.get(i) - .add(cell.getCellFormula() + ""); - break; - default: - data.get(i) - .add(" "); + Map> data = new HashMap<>(); + FileInputStream fis = new FileInputStream(new File(fileLocation)); + + if (fileLocation.endsWith(".xls")) { + data = readHSSFWorkbook(fis); + } else if (fileLocation.endsWith(".xlsx")) { + data = readXSSFWorkbook(fis); + } + + int maxNrCols = 0; + + for (List ls : data.values()) { + if (ls.size() > maxNrCols) { + maxNrCols = ls.size(); + } + } + + for (List ls : data.values()) { + if (ls.size() < maxNrCols) { + for (int i = ls.size(); i < maxNrCols; i++) { + ls.add(new MyCell("")); } } - i++; } - if (workbook != null){ - workbook.close(); + + return data; + } + + private String readCellContent(Cell cell) { + String content = ""; + switch (cell.getCellTypeEnum()) { + case STRING: + content = cell.getStringCellValue(); + break; + case NUMERIC: + if (DateUtil.isCellDateFormatted(cell)) { + content = cell.getDateCellValue() + ""; + } else { + content = cell.getNumericCellValue() + ""; + } + break; + case BOOLEAN: + content = cell.getBooleanCellValue() + ""; + break; + case FORMULA: + content = cell.getCellFormula() + ""; + break; + default: + content = ""; + } + return content; + } + + private Map> readHSSFWorkbook(FileInputStream fis) throws IOException { + Map> data = new HashMap<>(); + HSSFWorkbook workbook = null; + try { + workbook = new HSSFWorkbook(fis); + + HSSFSheet sheet = workbook.getSheetAt(0); + for (int i = sheet.getFirstRowNum(); i <= sheet.getLastRowNum(); i++) { + HSSFRow row = sheet.getRow(i); + data.put(i, new ArrayList()); + if (row != null) { + for (int j = 0; j < row.getLastCellNum(); j++) { + HSSFCell cell = row.getCell(j); + if (cell != null) { + HSSFCellStyle cellStyle = cell.getCellStyle(); + + MyCell myCell = new MyCell(); + + HSSFColor bgColor = cellStyle.getFillForegroundColorColor(); + if (bgColor != null) { + short[] rgbColor = bgColor.getTriplet(); + myCell.setBgColor("rgb(" + rgbColor[0] + "," + rgbColor[1] + "," + rgbColor[2] + ")"); + } + HSSFFont font = cell.getCellStyle() + .getFont(workbook); + myCell.setTextSize(font.getFontHeightInPoints() + ""); + if (font.getBold()) { + myCell.setTextWeight("bold"); + } + HSSFColor textColor = font.getHSSFColor(workbook); + if (textColor != null) { + short[] rgbColor = textColor.getTriplet(); + myCell.setTextColor("rgb(" + rgbColor[0] + "," + rgbColor[1] + "," + rgbColor[2] + ")"); + } + myCell.setContent(readCellContent(cell)); + data.get(i) + .add(myCell); + } else { + data.get(i) + .add(new MyCell("")); + } + } + } + } + } finally { + if (workbook != null) { + workbook.close(); + } } return data; } - public void writeExcel() throws IOException { - Workbook workbook = new XSSFWorkbook(); - + private Map> readXSSFWorkbook(FileInputStream fis) throws IOException { + XSSFWorkbook workbook = null; + Map> data = new HashMap<>(); try { - Sheet sheet = workbook.createSheet("Persons"); - sheet.setColumnWidth(0, 6000); - sheet.setColumnWidth(1, 4000); - Row header = sheet.createRow(0); + workbook = new XSSFWorkbook(fis); + XSSFSheet sheet = workbook.getSheetAt(0); - CellStyle headerStyle = workbook.createCellStyle(); + for (int i = sheet.getFirstRowNum(); i <= sheet.getLastRowNum(); i++) { + XSSFRow row = sheet.getRow(i); + data.put(i, new ArrayList()); + if (row != null) { + for (int j = 0; j < row.getLastCellNum(); j++) { + XSSFCell cell = row.getCell(j); + if (cell != null) { + XSSFCellStyle cellStyle = cell.getCellStyle(); - headerStyle.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex()); - headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); - - XSSFFont font = ((XSSFWorkbook) workbook).createFont(); - font.setFontName("Arial"); - font.setFontHeightInPoints((short) 16); - font.setBold(true); - headerStyle.setFont(font); - - Cell headerCell = header.createCell(0); - headerCell.setCellValue("Name"); - headerCell.setCellStyle(headerStyle); - - headerCell = header.createCell(1); - headerCell.setCellValue("Age"); - headerCell.setCellStyle(headerStyle); - - CellStyle style = workbook.createCellStyle(); - style.setWrapText(true); - - Row row = sheet.createRow(2); - Cell cell = row.createCell(0); - cell.setCellValue("John Smith"); - cell.setCellStyle(style); - - cell = row.createCell(1); - cell.setCellValue(20); - cell.setCellStyle(style); - - row = sheet.createRow(3); - cell = row.createCell(0); - cell.setCellValue("Ana Johnson"); - cell.setCellStyle(style); - - cell = row.createCell(1); - cell.setCellValue(30); - cell.setCellStyle(style); - - File currDir = new File("."); - String path = currDir.getAbsolutePath(); - String fileLocation = path.substring(0, path.length() - 1) + "temp.xlsx"; - - FileOutputStream outputStream = new FileOutputStream(fileLocation); - workbook.write(outputStream); - } finally { - if (workbook != null) { - try { - workbook.close(); - } catch (IOException e) { - e.printStackTrace(); + MyCell myCell = new MyCell(); + XSSFColor bgColor = cellStyle.getFillForegroundColorColor(); + if (bgColor != null) { + byte[] rgbColor = bgColor.getRGB(); + myCell.setBgColor("rgb(" + (rgbColor[0] < 0 ? (rgbColor[0] + 0xff) : rgbColor[0]) + "," + (rgbColor[1] < 0 ? (rgbColor[1] + 0xff) : rgbColor[1]) + "," + (rgbColor[2] < 0 ? (rgbColor[2] + 0xff) : rgbColor[2]) + ")"); + } + XSSFFont font = cellStyle.getFont(); + myCell.setTextSize(font.getFontHeightInPoints() + ""); + if (font.getBold()) { + myCell.setTextWeight("bold"); + } + XSSFColor textColor = font.getXSSFColor(); + if (textColor != null) { + byte[] rgbColor = textColor.getRGB(); + myCell.setTextColor("rgb(" + (rgbColor[0] < 0 ? (rgbColor[0] + 0xff) : rgbColor[0]) + "," + (rgbColor[1] < 0 ? (rgbColor[1] + 0xff) : rgbColor[1]) + "," + (rgbColor[2] < 0 ? (rgbColor[2] + 0xff) : rgbColor[2]) + ")"); + } + myCell.setContent(readCellContent(cell)); + data.get(i) + .add(myCell); + } else { + data.get(i) + .add(new MyCell("")); + } + } } } + } finally { + if (workbook != null) { + workbook.close(); + } } + return data; } } \ No newline at end of file diff --git a/spring-mvc-java/src/main/java/com/baeldung/excel/JExcelHelper.java b/spring-mvc-java/src/main/java/com/baeldung/excel/JExcelHelper.java deleted file mode 100644 index d0e33bf471..0000000000 --- a/spring-mvc-java/src/main/java/com/baeldung/excel/JExcelHelper.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.baeldung.excel; - -import jxl.Sheet; -import jxl.Workbook; -import jxl.format.Colour; -import jxl.read.biff.BiffException; -import jxl.write.*; -import jxl.write.Number; -import org.springframework.stereotype.Service; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; - -@Service -public class JExcelHelper { - - public Map> readJExcel(String fileLocation) throws IOException, BiffException { - Map> data = new HashMap<>(); - - Workbook workbook = Workbook.getWorkbook(new File(fileLocation)); - Sheet sheet = workbook.getSheet(0); - int rows = sheet.getRows(); - int columns = sheet.getColumns(); - - for (int i = 0; i < rows; i++) { - data.put(i, new ArrayList<>()); - for (int j = 0; j < columns; j++) { - data.get(i).add(sheet.getCell(j, i).getContents()); - } - } - return data; - } - - public void writeJExcel() throws IOException, WriteException { - WritableWorkbook workbook = null; - try { - File currDir = new File("."); - String path = currDir.getAbsolutePath(); - String fileLocation = path.substring(0, path.length() - 1) + "temp.xls"; - - workbook = Workbook.createWorkbook(new File(fileLocation)); - - WritableSheet sheet = workbook.createSheet("Sheet 1", 0); - - WritableCellFormat headerFormat = new WritableCellFormat(); - WritableFont font = new WritableFont(WritableFont.ARIAL, 16, WritableFont.BOLD); - headerFormat.setFont(font); - headerFormat.setBackground(Colour.LIGHT_BLUE); - headerFormat.setWrap(true); - Label headerLabel = new Label(0, 0, "Name", headerFormat); - sheet.setColumnView(0, 60); - sheet.addCell(headerLabel); - - headerLabel = new Label(1, 0, "Age", headerFormat); - sheet.setColumnView(0, 40); - sheet.addCell(headerLabel); - - WritableCellFormat cellFormat = new WritableCellFormat(); - cellFormat.setWrap(true); - - Label cellLabel = new Label(0, 2, "John Smith", cellFormat); - sheet.addCell(cellLabel); - Number cellNumber = new Number(1, 2, 20, cellFormat); - sheet.addCell(cellNumber); - - cellLabel = new Label(0, 3, "Ana Johnson", cellFormat); - sheet.addCell(cellLabel); - cellNumber = new Number(1, 3, 30, cellFormat); - sheet.addCell(cellNumber); - - workbook.write(); - } finally { - if (workbook != null) { - workbook.close(); - } - } - - } -} \ No newline at end of file diff --git a/spring-mvc-java/src/main/java/com/baeldung/excel/MyCell.java b/spring-mvc-java/src/main/java/com/baeldung/excel/MyCell.java new file mode 100644 index 0000000000..409829bc35 --- /dev/null +++ b/spring-mvc-java/src/main/java/com/baeldung/excel/MyCell.java @@ -0,0 +1,57 @@ +package com.baeldung.excel; + +public class MyCell { + private String content; + private String textColor; + private String bgColor; + private String textSize; + private String textWeight; + + public MyCell() { + } + + public MyCell(String content) { + this.content = content; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getTextColor() { + return textColor; + } + + public void setTextColor(String textColor) { + this.textColor = textColor; + } + + public String getBgColor() { + return bgColor; + } + + public void setBgColor(String bgColor) { + this.bgColor = bgColor; + } + + public String getTextSize() { + return textSize; + } + + public void setTextSize(String textSize) { + this.textSize = textSize; + } + + public String getTextWeight() { + return textWeight; + } + + public void setTextWeight(String textWeight) { + this.textWeight = textWeight; + } + +} \ No newline at end of file diff --git a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java index 9578303554..11be08a79d 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java +++ b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java @@ -108,11 +108,6 @@ public class WebConfig extends WebMvcConfigurerAdapter { configurer.setUrlPathHelper(urlPathHelper); } - @Bean - public JExcelHelper jExcelHelper() { - return new JExcelHelper(); - } - @Bean public ExcelPOIHelper excelPOIHelper() { return new ExcelPOIHelper(); diff --git a/spring-mvc-java/src/main/java/com/baeldung/web/controller/ExcelController.java b/spring-mvc-java/src/main/java/com/baeldung/web/controller/ExcelController.java index 810282dd65..f76f7441a5 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/web/controller/ExcelController.java +++ b/spring-mvc-java/src/main/java/com/baeldung/web/controller/ExcelController.java @@ -10,20 +10,15 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import com.baeldung.excel.*; -import jxl.read.biff.BiffException; import java.util.Map; -import java.util.ArrayList; +import java.util.List; import javax.annotation.Resource; -import jxl.write.WriteException; @Controller public class ExcelController { private String fileLocation; - @Resource(name = "jExcelHelper") - private JExcelHelper jExcelHelper; - @Resource(name = "excelPOIHelper") private ExcelPOIHelper excelPOIHelper; @@ -45,36 +40,19 @@ public class ExcelController { } f.flush(); f.close(); - System.out.println(fileLocation); model.addAttribute("message", "File: " + file.getOriginalFilename() + " has been uploaded successfully!"); return "excel"; } - @RequestMapping(method = RequestMethod.GET, value = "/readJExcel") - public String readJExcel(Model model) throws IOException, BiffException { - - if (fileLocation != null) { - if (fileLocation.endsWith(".xls")) { - Map> data = jExcelHelper.readJExcel(fileLocation); - model.addAttribute("data", data); - } else { - model.addAttribute("message", "Not a valid .xls file!"); - } - } else { - model.addAttribute("message", "File missing! Please upload an excel file."); - } - return "excel"; - } - @RequestMapping(method = RequestMethod.GET, value = "/readPOI") public String readPOI(Model model) throws IOException { if (fileLocation != null) { - if (fileLocation.endsWith(".xlsx")) { - Map> data = excelPOIHelper.readExcel(fileLocation); + if (fileLocation.endsWith(".xlsx") || fileLocation.endsWith(".xls")) { + Map> data = excelPOIHelper.readExcel(fileLocation); model.addAttribute("data", data); } else { - model.addAttribute("message", "Not a valid .xlsx file!"); + model.addAttribute("message", "Not a valid excel file!"); } } else { model.addAttribute("message", "File missing! Please upload an excel file."); @@ -82,24 +60,4 @@ public class ExcelController { return "excel"; } - @RequestMapping(method = RequestMethod.POST, value = "/writeJExcel") - public String writeJExcel(Model model) throws IOException, BiffException, WriteException { - - jExcelHelper.writeJExcel(); - - model.addAttribute("message", "Write successful!"); - - return "excel"; - } - - @RequestMapping(method = RequestMethod.POST, value = "/writePOI") - public String writePOI(Model model) throws IOException { - - excelPOIHelper.writeExcel(); - - model.addAttribute("message", "Write successful!"); - - return "excel"; - } - } \ No newline at end of file diff --git a/spring-mvc-java/src/main/webapp/WEB-INF/view/excel.jsp b/spring-mvc-java/src/main/webapp/WEB-INF/view/excel.jsp index b50687df15..bcb5a31371 100644 --- a/spring-mvc-java/src/main/webapp/WEB-INF/view/excel.jsp +++ b/spring-mvc-java/src/main/webapp/WEB-INF/view/excel.jsp @@ -1,6 +1,6 @@ <%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> -<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> + pageEncoding="ISO-8859-1"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> @@ -8,49 +8,43 @@ Excel Processing - - - - - - + + + -
- - -
-
-${message } -

-
- -
-

-Read file using JExcel     -Read file using Apache POI -

+
+ + +
+
+
+ +
+
${message } +
+
-File content: - - - - - - - - - -
${cell}
-
-

-
- -
-
-
- -
+
+ +
+
+
+ + + + + + + + + + +
+ ${cell.content} +
+
- \ No newline at end of file