JAVA工具类_常用
- 下划线转驼峰
- POI 导出Excel工具类
- POI 导入Excel工具类
下划线转驼峰
public static String underlineToCamelCase(String underscoreStr) {if (underscoreStr == null) {return null;}underscoreStr = underscoreStr.toLowerCase();StringBuilder camelCaseStr = new StringBuilder();boolean nextIsUpperCase = false;for (char underscoreChar : underscoreStr.toCharArray()) {if ('_' == underscoreChar) {nextIsUpperCase = true;} else if (nextIsUpperCase) {camelCaseStr.append(Character.toUpperCase(underscoreChar));nextIsUpperCase = false;} else {camelCaseStr.append(underscoreChar);}}return camelCaseStr.toString();}
POI 导出Excel工具类

package com.bairong.micro.modules.util;import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
public class ExcelExportUtil {private static Logger log = LoggerFactory.getLogger(ExcelExportUtil.class);public static void downLoadFile(List contextlist, List<String> titleNameList,OutputStream outputStream) throws Exception {SXSSFWorkbook wb = new SXSSFWorkbook();buildSheet(wb, contextlist, titleNameList);try {wb.write(outputStream);outputStream.flush();} catch (IOException e) {log.error("", e);} finally {outputStream.close();}}public static void buildSheet(SXSSFWorkbook wb, List exportDataList, List<String> titleNameList) throws IllegalAccessException {Sheet sheet = wb.createSheet("sheet1");sheet.setVerticallyCenter(true);Row row = sheet.createRow(0);XSSFFont boldFont = (XSSFFont) wb.createFont();boldFont.setBold(true);XSSFCellStyle titleStyle = (XSSFCellStyle) wb.createCellStyle();titleStyle.setFont(boldFont);titleStyle.setBorderTop(BorderStyle.THIN);titleStyle.setBorderBottom(BorderStyle.THIN);titleStyle.setBorderLeft(BorderStyle.THIN);titleStyle.setBorderRight(BorderStyle.THIN);titleStyle.setFillPattern(FillPatternType.NO_FILL);titleStyle.setAlignment(HorizontalAlignment.CENTER); titleStyle.setVerticalAlignment(VerticalAlignment.CENTER); setTitle(sheet, row, titleStyle, titleNameList);XSSFCellStyle contextStyle = (XSSFCellStyle) wb.createCellStyle();contextStyle.setBorderTop(BorderStyle.THIN);contextStyle.setBorderBottom(BorderStyle.THIN);contextStyle.setBorderLeft(BorderStyle.THIN);contextStyle.setBorderRight(BorderStyle.THIN);contextStyle.setFillPattern(FillPatternType.NO_FILL);contextStyle.setAlignment(HorizontalAlignment.LEFT); contextStyle.setVerticalAlignment(VerticalAlignment.CENTER); setData(sheet, contextStyle, exportDataList);}public static void setTitle(Sheet sheet, Row row, XSSFCellStyle style, List<String> titleNameList) {for (int i = 0; i < titleNameList.size(); i++) {Cell cell = row.createCell(i);String titleName = titleNameList.get(i);cell.setCellValue(titleName);cell.setCellStyle(style);sheet.setColumnWidth(i, 30 * 256);}}public static void setData(Sheet sheet, XSSFCellStyle style, List exportDataList) throws IllegalAccessException {if (exportDataList != null && !exportDataList.isEmpty()) {if (exportDataList.get(0) instanceof List) {for (int i = 0; i < exportDataList.size(); i++) {List vs = (List) exportDataList.get(i);if (vs.size() > 0) {Row row = sheet.createRow(i + 1);for (int j = 0; j < vs.size(); j++) {Cell cell = row.createCell(j);cell.setCellStyle(style);String value = vs.get(j) == null ? "" : vs.get(j).toString();setCellValue(cell, value);}}}} else {for (int i = 0; i < exportDataList.size(); i++) {Class cla = exportDataList.get(i).getClass();Field[] fields = cla.getDeclaredFields();if (fields.length > 0) {Row row = sheet.createRow(i + 1);for (int j = 0; j < fields.length; j++) {Field field = fields[j];field.setAccessible(true);Cell cell = row.createCell(j);cell.setCellStyle(style);String value = field.get(exportDataList.get(i)) == null ? "" : field.get(exportDataList.get(i)).toString();setCellValue(cell, value);}}}}}}public static List<List> mapToList(List<LinkedHashMap> list) {List<List> titleValueList = new ArrayList<>();for (int i = 0; i < list.size(); i++) {ArrayList<Object> obj = new ArrayList<>();LinkedHashMap paramMap = list.get(i);paramMap.forEach((k, v) -> {obj.add(v);});titleValueList.add(obj);}return titleValueList;}public static String getCurrentDate() {Date currentTime = new Date();SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd_HHmmssSSS");String dateString = formatter.format(currentTime);return dateString;}public static void setCellValue(Cell cell, String value) {try {cell.setCellValue(value);} catch (IllegalArgumentException e) {cell.setCellValue("内容超长,无法导出");}}public static String replaceNullByObj(Object obj) {if (obj == null) {return "";} else {return String.valueOf(obj);}}
}
POI 导入Excel工具类

package com.bairong.micro.modules.util;import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ExcelReaderUtil {public interface RowHandler {void handle(Row row);}public static void readExcelFile(String filePath,boolean skipFirstRow ,RowHandler rowHandler) {try (FileInputStream inputStream = new FileInputStream(filePath);Workbook workbook = new XSSFWorkbook(inputStream)) {Sheet sheet = workbook.getSheetAt(0); Iterator<Row> rowIterator = sheet.iterator(); if (skipFirstRow){rowIterator.next(); }while (rowIterator.hasNext()) {Row row = rowIterator.next();rowHandler.handle(row); }} catch (IOException e) {e.printStackTrace();}}public static List<String> readExcelFirstRowToList(String filePath) {ArrayList<String> fistRowList = new ArrayList<>();try (FileInputStream inputStream = new FileInputStream(filePath);Workbook workbook = new XSSFWorkbook(inputStream)) {Sheet sheet = workbook.getSheetAt(0); Iterator<Row> rowIterator = sheet.iterator(); Row firstRow = rowIterator.next();int lastCellNum = firstRow.getLastCellNum();for (int i = 0; i < lastCellNum; i++) {String stringCellValue = firstRow.getCell(i).getStringCellValue();fistRowList.add(stringCellValue);}} catch (IOException e) {e.printStackTrace();}return fistRowList;}}