From ab2050c3493afa22619e5bb9c0bfb7b48990f96c Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期一, 17 二月 2025 15:18:38 +0800
Subject: [PATCH] 111
---
server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java | 507 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 500 insertions(+), 7 deletions(-)
diff --git a/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java b/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
index fc2bad2..cfeb782 100644
--- a/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
+++ b/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
@@ -4,24 +4,40 @@
import com.doumee.core.exception.BusinessException;
import lombok.AllArgsConstructor;
import lombok.Data;
+import org.apache.commons.lang3.BooleanUtils;
+import org.apache.commons.lang3.CharUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.math.NumberUtils;
+import org.apache.poi.hssf.usermodel.HSSFRichTextString;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.core.annotation.AnnotationConfigurationException;
+import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
+import java.io.InputStream;
import java.io.OutputStream;
+import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.math.BigDecimal;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.text.SimpleDateFormat;
import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
* Excel瀵煎嚭瀹炵幇
* @author Eva.Caesar Liu
- * @date 2022/03/15 09:54
+ * @date 2022/04/18 18:12
*/
@Data
public class ExcelExporter<T> {
@@ -31,6 +47,13 @@
private Class<T> modelClass;
private ExcelExporter(){}
+
+
+
+ private final static Logger log = LoggerFactory.getLogger(ExcelExporter.class);
+
+ private final static String EXCEL2003 = "xls";
+ private final static String EXCEL2007 = "xlsx";
/**
* 鏋勯�犲櫒
@@ -52,6 +75,8 @@
SXSSFWorkbook sxssfWorkbook;
try {
sxssfWorkbook = new SXSSFWorkbook();
+
+ CellStyle style = sxssfWorkbook.createCellStyle();
Sheet sheet = sxssfWorkbook.createSheet(sheetName);
// 鍒涘缓鍒楀ご
sheet.createFreezePane(0, 1);
@@ -68,7 +93,7 @@
sheet.setColumnWidth(columnIndex, column.columnConfig.width() * 2 * 256);
}
// 璁剧疆鍒楀ご鍗曞厓鏍�
- configHeaderCell(sxssfWorkbook, cell, column.columnConfig);
+ configHeaderCell(sxssfWorkbook, cell, column.columnConfig,style);
}
// 鍒涘缓鏁版嵁璁板綍
for (int rowIndex = 0; rowIndex < data.size(); rowIndex++) {
@@ -78,7 +103,7 @@
Cell cell = row.createCell(columnIndex);
cell.setCellValue(getCellData(column, data.get(rowIndex)));
// 璁剧疆鏁版嵁鍗曞厓鏍�
- configDataCell(sxssfWorkbook, cell, column.columnConfig);
+ configDataCell(sxssfWorkbook, cell, column.columnConfig,style);
}
}
sxssfWorkbook.write(os);
@@ -125,7 +150,187 @@
public void export (List<T> data, String fileName, HttpServletResponse response) {
this.export(data, fileName, DEFAULT_SHEET_NAME, response);
}
+ /**
+ * 瀵煎嚭鑷冲搷搴旀祦
+ * @param data 鏁版嵁
+ * @param fileName Excel鏂囦欢鍚�
+ * @param response HttpServletResponse瀵硅薄
+ */
+ public void exportWithFirstAndEnd (List<T> data, String fileName,String first,String end, HttpServletResponse response) {
+ this.exportWithFirstAndEnd(data, fileName, DEFAULT_SHEET_NAME, first,end,response);
+ }
+ /**
+ * 瀵煎嚭鑷冲搷搴旀祦
+ * @param data 鏁版嵁
+ * @param fileName Excel鏂囦欢鍚�
+ * @param sheetName Sheet鍚嶇О
+ * @param response HttpServletResponse瀵硅薄
+ */
+ public void exportWithFirstAndEnd (List<T> data, String fileName, String sheetName, String first,String end ,HttpServletResponse response) {
+ try {
+ String encodeFileName = URLEncoder.encode(fileName, Charset.forName("UTF-8").toString()) + ".xlsx";
+ response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName);
+ response.setContentType("application/octet-stream");
+ response.setHeader("eva-opera-type", "download");
+ response.setHeader("eva-download-filename", encodeFileName);
+ this.exportWithFirstAndEnd(data, sheetName,first,end, response.getOutputStream());
+ } catch (IOException e) {
+ throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
+ }
+ }
+ /**
+ * 瀵煎嚭鍒版寚瀹氳緭鍑烘祦
+ * @param data 鏁版嵁
+ * @param sheetName Sheet鍚嶇О
+ */
+ public void exportWithFirstAndEnd (List<T> data, String sheetName,String first,String end, OutputStream os) {
+ SXSSFWorkbook sxssfWorkbook;
+ try {
+ sxssfWorkbook = new SXSSFWorkbook();
+ Sheet sheet = sxssfWorkbook.createSheet(sheetName);
+ // 鍒涘缓鍒楀ご
+ sheet.createFreezePane(0, 2);
+ sheet.addMergedRegion(new CellRangeAddress(0 ,0,0,this.getColumns().size()-1));
+ Row title = sheet.createRow(0);
+ title.setHeight((short) 1000);
+ Cell c = title.createCell(0);
+ c.setCellValue(first);
+ configFirstCell(sxssfWorkbook,c);
+
+ Row header = sheet.createRow(1);
+ header.setHeight((short)600);
+ List<ColumnInfo> columns = this.getColumns();
+ for (int columnIndex = 0; columnIndex < columns.size(); columnIndex++) {
+ ColumnInfo column = columns.get(columnIndex);
+ Cell cell = header.createCell(columnIndex);
+ cell.setCellValue(new HSSFRichTextString(column.columnConfig.name()));
+ // 鍒楀璁剧疆
+ if (column.columnConfig.width() == -1) {
+ sheet.setColumnWidth(columnIndex, column.columnConfig.name().length() * 2 * 256);
+ } else {
+ sheet.setColumnWidth(columnIndex, column.columnConfig.width() * 2 * 256);
+ }
+ // 璁剧疆鍒楀ご鍗曞厓鏍�
+ configHeaderCell(sxssfWorkbook, cell, column.columnConfig);
+ }
+ // 鍒涘缓鏁版嵁璁板綍
+ for (int rowIndex = 0; rowIndex < data.size(); rowIndex++) {
+ Row row = sheet.createRow(rowIndex + 2);
+ for (int columnIndex = 0; columnIndex < columns.size(); columnIndex++) {
+ ColumnInfo column = columns.get(columnIndex);
+ Cell cell = row.createCell(columnIndex);
+ cell.setCellValue(getCellData(column, data.get(rowIndex)));
+ // 璁剧疆鏁版嵁鍗曞厓鏍�
+ configDataCell(sxssfWorkbook, cell, column.columnConfig);
+ }
+ }
+ if(StringUtils.isNotBlank(end)){
+ sheet.addMergedRegion(new CellRangeAddress(data.size()+2 ,data.size()+2,0,this.getColumns().size()-1));
+ Row endRow = sheet.createRow(data.size()+2);
+// endRow.setHeight((short) 600);
+ Cell c1 = endRow.createCell(0);
+ c1.setCellValue(end);
+ configEndCell(sxssfWorkbook,c1);
+ }
+ sxssfWorkbook.write(os);
+ os.close();
+ } catch (Exception e) {
+ throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
+ } finally {
+ if (os != null) {
+ try {
+ os.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ /**
+ * 閰嶇疆鏁版嵁鍗曞厓鏍�
+ */
+ private void configDataCell (SXSSFWorkbook workbook, Cell cell, ExcelColumn columnConfig) {
+ CellStyle style = workbook.createCellStyle();
+ style.setAlignment(columnConfig.align());
+ style.setVerticalAlignment(VerticalAlignment.CENTER);
+ // 璁剧疆鑳屾櫙
+ style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ style.setFillForegroundColor(columnConfig.dataBackgroundColor().getIndex());
+ // 瀛椾綋
+ Font font = workbook.createFont();
+ font.setFontHeightInPoints(columnConfig.fontSize());
+ // 瀛椾綋棰滆壊
+ font.setColor(columnConfig.color().getIndex());
+ // 绮椾綋
+ font.setBold(columnConfig.bold());
+ // 鏂滀綋
+ font.setItalic(columnConfig.italic());
+ style.setFont(font);
+ // 杈规
+ configCellBorder(style);
+ style.setWrapText(true);
+ cell.setCellStyle(style);
+ }
+ /**
+ * 閰嶇疆鍒楀ご鍗曞厓鏍�
+ */
+ private void configFirstCell (SXSSFWorkbook workbook, Cell cell ) {
+ CellStyle style = workbook.createCellStyle();
+ style.setAlignment(HorizontalAlignment.CENTER);
+ style.setVerticalAlignment(VerticalAlignment.CENTER);
+ // 璁剧疆鑳屾櫙
+ style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ style.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
+ // 瀛椾綋
+ Font font = workbook.createFont();
+ font.setFontHeightInPoints((short)24);
+ font.setBold(true);
+ style.setFont(font);
+ // 璁剧疆杈规
+ configCellBorder(style);
+ cell.setCellStyle(style);
+ }
+ /**
+ * 閰嶇疆鍒楀ご鍗曞厓鏍�
+ */
+ private void configEndCell (SXSSFWorkbook workbook, Cell cell ) {
+ CellStyle style = workbook.createCellStyle();
+ style.setAlignment(HorizontalAlignment.RIGHT);
+ style.setVerticalAlignment(VerticalAlignment.CENTER);
+ // 璁剧疆鑳屾櫙
+ style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+ // 瀛椾綋
+ Font font = workbook.createFont();
+ font.setFontHeightInPoints((short)14);
+ style.setFont(font);
+ // 璁剧疆杈规
+ configCellBorder(style);
+ cell.setCellStyle(style);
+ }
+ /**
+ * 閰嶇疆鍒楀ご鍗曞厓鏍�
+ */
+ private void configHeaderCell (SXSSFWorkbook workbook, Cell cell, ExcelColumn columnConfig) {
+ CellStyle style = workbook.createCellStyle();
+ style.setAlignment(columnConfig.align());
+ style.setVerticalAlignment(VerticalAlignment.CENTER);
+ // 璁剧疆鑳屾櫙
+ style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+// style.setFillForegroundColor(columnConfig.backgroundColor().getIndex());
+ style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
+ // 瀛椾綋
+ Font font = workbook.createFont();
+ font.setFontHeightInPoints((short)11);
+ font.setColor(columnConfig.color().index);
+ font.setBold(true);
+ style.setFont(font);
+ // 璁剧疆杈规
+ style.setWrapText(true);
+ configCellBorder(style);
+ cell.setCellStyle(style);
+ }
/**
* 鑾峰彇鍒楅泦鍚�
*/
@@ -147,11 +352,15 @@
return new ArrayList<>(sortedFields.values());
}
+ public static void main(String[] args) {
+ ExcelExporter m = new ExcelExporter();
+// ExcelExporter.build(UserSalaryListVO.class).getColumns();
+ }
/**
* 閰嶇疆鏁版嵁鍗曞厓鏍�
*/
- private void configDataCell (SXSSFWorkbook workbook, Cell cell, ExcelColumn columnConfig) {
- CellStyle style = workbook.createCellStyle();
+ private void configDataCell (SXSSFWorkbook workbook, Cell cell, ExcelColumn columnConfig, CellStyle style) {
+ // CellStyle style = workbook.createCellStyle();
style.setAlignment(columnConfig.align());
style.setVerticalAlignment(VerticalAlignment.CENTER);
// 璁剧疆鑳屾櫙
@@ -175,8 +384,8 @@
/**
* 閰嶇疆鍒楀ご鍗曞厓鏍�
*/
- private void configHeaderCell (SXSSFWorkbook workbook, Cell cell, ExcelColumn columnConfig) {
- CellStyle style = workbook.createCellStyle();
+ private void configHeaderCell (SXSSFWorkbook workbook, Cell cell, ExcelColumn columnConfig,CellStyle style) {
+ // CellStyle style = workbook.createCellStyle();
style.setAlignment(columnConfig.align());
style.setVerticalAlignment(VerticalAlignment.CENTER);
// 璁剧疆鑳屾櫙
@@ -263,4 +472,288 @@
private Field field;
}
+
+
+ public static <T> List<T> readExcel(String path, Class<T> cls, MultipartFile file) {
+
+ String fileName = file.getOriginalFilename();
+ if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) {
+ log.error("涓婁紶鏂囦欢鏍煎紡涓嶆纭�");
+ }
+ List<T> dataList = new ArrayList<>();
+ Workbook workbook = null;
+ try {
+ InputStream is = file.getInputStream();
+ if (fileName.endsWith(EXCEL2007)) {
+ workbook = new XSSFWorkbook(is);
+ }
+ if (fileName.endsWith(EXCEL2003)) {
+ workbook = new HSSFWorkbook(is);
+ }
+ if (workbook != null) {
+ //绫绘槧灏� 娉ㄨВ value-->bean columns
+ Map<String, List<Field>> classMap = new HashMap<>();
+ List<Field> fields = Stream.of(cls.getDeclaredFields()).collect(Collectors.toList());
+ fields.forEach(
+ field -> {
+ ExcelColumn annotation = field.getAnnotation(ExcelColumn.class);
+ if (annotation != null) {
+ String value = annotation.name();
+ if (StringUtils.isBlank(value)) {
+ return;//return璧峰埌鐨勪綔鐢ㄥ拰continue鏄浉鍚岀殑 璇硶
+ }
+ if (!classMap.containsKey(value)) {
+ classMap.put(value, new ArrayList<>());
+ }
+ field.setAccessible(true);
+ classMap.get(value).add(field);
+ }
+ }
+ );
+ //绱㈠紩-->columns
+ Map<Integer, List<Field>> reflectionMap = new HashMap<>(16);
+ //榛樿璇诲彇绗竴涓猻heet
+ Sheet sheet = workbook.getSheetAt(0);
+
+ boolean firstRow = true;
+ for (int i = sheet.getFirstRowNum(); i <= sheet.getLastRowNum(); i++) {
+ Row row = sheet.getRow(i);
+ //棣栬 鎻愬彇娉ㄨВ
+ if (firstRow) {
+ for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
+ Cell cell = row.getCell(j);
+ String cellValue = getCellValue(cell);
+ if (classMap.containsKey(cellValue)) {
+ reflectionMap.put(j, classMap.get(cellValue));
+ }
+ }
+ firstRow = false;
+ } else {
+ //蹇界暐绌虹櫧琛�
+ if (row == null) {
+ continue;
+ }
+ try {
+ T t = cls.newInstance();
+ //鍒ゆ柇鏄惁涓虹┖鐧借
+ boolean allBlank = true;
+ for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
+ if (reflectionMap.containsKey(j)) {
+ Cell cell = row.getCell(j);
+ String cellValue = getCellValue(cell);
+ if (StringUtils.isNotBlank(cellValue)) {
+ allBlank = false;
+ }
+ List<Field> fieldList = reflectionMap.get(j);
+ fieldList.forEach(
+ x -> {
+ try {
+ handleField(t, cellValue, x);
+ } catch (Exception e) {
+ log.error(String.format("reflect field:%s value:%s exception!", x.getName(), cellValue), e);
+ }
+ }
+ );
+ }
+ }
+ if (!allBlank) {
+ dataList.add(t);
+ } else {
+ log.warn(String.format("row:%s is blank ignore!", i));
+ }
+ } catch (Exception e) {
+ log.error(String.format("parse row:%s exception!", i), e);
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ log.error(String.format("parse excel exception!"), e);
+ } finally {
+ if (workbook != null) {
+ try {
+ workbook.close();
+ } catch (Exception e) {
+ log.error(String.format("parse excel exception!"), e);
+ }
+ }
+ }
+ return dataList;
+ }
+
+ private static <T> void handleField(T t, String value, Field field) throws Exception {
+ Class<?> type = field.getType();
+ if (type == null || type == void.class || StringUtils.isBlank(value)) {
+ return;
+ }
+ if (type == Object.class) {
+ field.set(t, value);
+ //鏁板瓧绫诲瀷
+ } else if (type.getSuperclass() == null || type.getSuperclass() == Number.class) {
+ if (type == int.class || type == Integer.class) {
+ field.set(t, NumberUtils.toInt(value));
+ } else if (type == long.class || type == Long.class) {
+ field.set(t, NumberUtils.toLong(value));
+ } else if (type == byte.class || type == Byte.class) {
+ field.set(t, NumberUtils.toByte(value));
+ } else if (type == short.class || type == Short.class) {
+ field.set(t, NumberUtils.toShort(value));
+ } else if (type == double.class || type == Double.class) {
+ field.set(t, NumberUtils.toDouble(value));
+ } else if (type == float.class || type == Float.class) {
+ field.set(t, NumberUtils.toFloat(value));
+ } else if (type == char.class || type == Character.class) {
+ field.set(t, CharUtils.toChar(value));
+ } else if (type == boolean.class) {
+ field.set(t, BooleanUtils.toBoolean(value));
+ } else if (type == BigDecimal.class) {
+ field.set(t, new BigDecimal(value));
+ }
+ } else if (type == Boolean.class) {
+ field.set(t, BooleanUtils.toBoolean(value));
+ } else if (type == Date.class) {
+ field.set(t, value);
+ } else if (type == String.class) {
+ field.set(t, value);
+ } else {
+ Constructor<?> constructor = type.getConstructor(String.class);
+ field.set(t, constructor.newInstance(value));
+ }
+ }
+
+ private static String getCellValue(Cell cell) {
+ if (cell == null) {
+ return "";
+ }else{
+ return StringUtils.trimToEmpty(cell.getStringCellValue());
+ }
+ /* if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
+ if (HSSFDateUtil.isCellDateFormatted(cell)) {
+ return HSSFDateUtil.getJavaDate(cell.getNumericCellValue()).toString();
+ } else {
+ return new BigDecimal(cell.getNumericCellValue()).toString();
+ }
+ } else if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
+ return StringUtils.trimToEmpty(cell.getStringCellValue());
+ } else if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) {
+ return StringUtils.trimToEmpty(cell.getCellFormula());
+ } else if (cell.getCellType() == Cell.CELL_TYPE_BLANK) {
+ return "";
+ } else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
+ return String.valueOf(cell.getBooleanCellValue());
+ } else if (cell.getCellType() == Cell.CELL_TYPE_ERROR) {
+ return "ERROR";
+ } else {
+ return cell.toString().trim();
+ }*/
+ }
+
+ /* public static <T> void writeExcel(HttpServletResponse response, List<T> dataList, Class<T> cls, String fileName) {
+ Field[] fields = cls.getDeclaredFields();
+ List<Field> fieldList = Arrays.stream(fields)
+ .filter(field -> {
+ ExcelColumn annotation = field.getAnnotation(ExcelColumn.class);
+ if (annotation != null && annotation.col() > 0) {
+ field.setAccessible(true);
+ return true;
+ }
+ return false;
+ }).sorted(Comparator.comparing(field -> {
+ int col = 0;
+ ExcelColumn annotation = field.getAnnotation(ExcelColumn.class);
+ if (annotation != null) {
+ col = annotation.col();
+ }
+ return col;
+ })).collect(Collectors.toList());
+
+ Workbook wb = new XSSFWorkbook();
+ Sheet sheet = wb.createSheet("Sheet1");
+ AtomicInteger ai = new AtomicInteger();
+ {
+ Row row = sheet.createRow(ai.getAndIncrement());
+ AtomicInteger aj = new AtomicInteger();
+ //鍐欏叆澶撮儴
+ fieldList.forEach(field -> {
+ ExcelColumn annotation = field.getAnnotation(ExcelColumn.class);
+ String columnName = "";
+ if (annotation != null) {
+ columnName = annotation.value();
+ }
+ Cell cell = row.createCell(aj.getAndIncrement());
+ CellStyle cellStyle = wb.createCellStyle();
+ cellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
+ Font font = wb.createFont();
+ cellStyle.setFont(font);
+ cell.setCellStyle(cellStyle);
+ cell.setCellValue(columnName);
+ });
+ }
+ if (CollectionUtils.isNotEmpty(dataList)) {
+ dataList.forEach(t -> {
+ Row row1 = sheet.createRow(ai.getAndIncrement());
+ AtomicInteger aj = new AtomicInteger();
+ fieldList.forEach(field -> {
+ Class<?> type = field.getType();
+ Object value = "";
+ try {
+ value = field.get(t);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ Cell cell = row1.createCell(aj.getAndIncrement());
+ if (value != null) {
+ if (type == Date.class) {
+ cell.setCellValue(value.toString());
+ } else {
+ cell.setCellValue(value.toString());
+ }
+ cell.setCellValue(value.toString());
+ }
+ });
+ });
+ }
+ //鍐荤粨绐楁牸
+ wb.getSheet("Sheet1").createFreezePane(0, 1, 0, 1);
+ //娴忚鍣ㄤ笅杞絜xcel
+ buildExcelDocument(fileName, wb, response);
+ }*/
+
+ /**
+ * 娴忚鍣ㄤ笅杞絜xcel
+ *
+ * @param fileName
+ * @param wb
+ * @param response
+ */
+/*
+ private static void buildExcelDocument(String fileName, Workbook wb, HttpServletResponse response) {
+ try {
+ response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+ response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));
+ response.flushBuffer();
+ wb.write(response.getOutputStream());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }*/
+
+ /**
+ * 鐢熸垚excel鏂囦欢
+ *
+ * @param path 鐢熸垚excel璺緞
+ * @param wb
+ */
+ /* private static void buildExcelFile(String path, Workbook wb) {
+ File file = new File(path);
+ if (file.exists()) {
+ file.delete();
+ }
+ try {
+ wb.write(new FileOutputStream(file));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }*/
+
}
--
Gitblit v1.9.3