140 lines
4.6 KiB
Java
140 lines
4.6 KiB
Java
|
|
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.XSSFFont;
|
||
|
|
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;
|
||
|
|
|
||
|
|
@Service
|
||
|
|
public class ExcelPOIHelper {
|
||
|
|
|
||
|
|
public Map<Integer, ArrayList<String>> readExcel(String fileLocation) throws IOException {
|
||
|
|
|
||
|
|
Map<Integer, ArrayList<String>> data = new HashMap<Integer, ArrayList<String>>();
|
||
|
|
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<String>());
|
||
|
|
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(" ");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
i++;
|
||
|
|
}
|
||
|
|
if (workbook != null){
|
||
|
|
workbook.close();
|
||
|
|
}
|
||
|
|
return data;
|
||
|
|
}
|
||
|
|
|
||
|
|
public void writeExcel() throws IOException {
|
||
|
|
Workbook workbook = new XSSFWorkbook();
|
||
|
|
|
||
|
|
try {
|
||
|
|
Sheet sheet = workbook.createSheet("Persons");
|
||
|
|
sheet.setColumnWidth(0, 6000);
|
||
|
|
sheet.setColumnWidth(1, 4000);
|
||
|
|
|
||
|
|
Row header = sheet.createRow(0);
|
||
|
|
|
||
|
|
CellStyle headerStyle = workbook.createCellStyle();
|
||
|
|
|
||
|
|
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();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|