Commit 7cd14cae LN

Merge remote-tracking branch 'origin/master'

2 个父辈 178acaa6 91c74957
package com.neotel.smfcore.common.config.file;
import com.alibaba.excel.write.style.row.AbstractRowHeightStyleStrategy;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import java.util.Iterator;
public class CustomCellWriteHeightConfig extends AbstractRowHeightStyleStrategy {
/**
* 默认高度
*/
private static final Integer DEFAULT_HEIGHT = 300;
@Override
protected void setHeadColumnHeight(Row row, int relativeRowIndex) {
}
@Override
protected void setContentColumnHeight(Row row, int relativeRowIndex) {
Iterator<Cell> cellIterator = row.cellIterator();
if (!cellIterator.hasNext()) {
return;
}
// 默认为 1行高度
Integer maxHeight = 1;
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch (cell.getCellTypeEnum()) {
case STRING:
if (cell.getStringCellValue().indexOf("\n") != -1) {
int length = cell.getStringCellValue().split("\n").length;
maxHeight = Math.max(maxHeight, length);
}
break;
default:
break;
}
}
row.setHeight((short) (maxHeight * DEFAULT_HEIGHT));
}
}
package com.neotel.smfcore.common.config.file;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.metadata.data.CellData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.style.column.AbstractColumnWidthStyleStrategy;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.poi.ss.usermodel.Cell;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CustomCellWriteWeightConfig extends AbstractColumnWidthStyleStrategy {
// 可以根据这里的最大宽度,按自己需要进行调整,搭配单元格样式实现类中的,自动换行,效果更好
private static final int MAX_COLUMN_WIDTH = 100;
private Map<Integer, Map<Integer, Integer>> CACHE = new HashMap(8);
@Override
protected void setColumnWidth(WriteSheetHolder writeSheetHolder, List<WriteCellData<?>> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
boolean needSetWidth = isHead || !CollectionUtils.isEmpty(cellDataList);
if (needSetWidth) {
Map<Integer, Integer> maxColumnWidthMap = (Map)CACHE.get(writeSheetHolder.getSheetNo());
if (maxColumnWidthMap == null) {
maxColumnWidthMap = new HashMap(16);
CACHE.put(writeSheetHolder.getSheetNo(), maxColumnWidthMap);
}
Integer columnWidth = this.dataLength(cellDataList, cell, isHead);
if (columnWidth >= 0) {
if (columnWidth > MAX_COLUMN_WIDTH) {
columnWidth = MAX_COLUMN_WIDTH;
}
Integer maxColumnWidth = (Integer)((Map)maxColumnWidthMap).get(cell.getColumnIndex());
if (maxColumnWidth == null || columnWidth > maxColumnWidth) {
((Map)maxColumnWidthMap).put(cell.getColumnIndex(), columnWidth);
writeSheetHolder.getSheet().setColumnWidth(cell.getColumnIndex(), columnWidth * 256);
}
}
}
}
private Integer dataLength(List<WriteCellData<?>> cellDataList, Cell cell, Boolean isHead) {
if (isHead) {
return cell.getStringCellValue().getBytes().length;
} else {
CellData cellData = (CellData)cellDataList.get(0);
CellDataTypeEnum type = cellData.getType();
if (type == null) {
return -1;
} else {
switch(type) {
case STRING:
return cellData.getStringValue().getBytes().length;
case BOOLEAN:
return cellData.getBooleanValue().toString().getBytes().length;
case NUMBER:
return cellData.getNumberValue().toString().getBytes().length;
default:
return -1;
}
}
}
}
}
...@@ -115,7 +115,7 @@ public class MenuInit { ...@@ -115,7 +115,7 @@ public class MenuInit {
//设备看板 //设备看板
addDefaultFunctionMenu(1,null,"设备看板","lockMaterial", "lockMaterial/material/index","kanban",DEFAULT_SHOW_MENU); addDefaultFunctionMenu(1,null,"设备看板","lockMaterial", "lockMaterial/material/index","kanban",DEFAULT_SHOW_MENU);
addDefaultFunctionMenu(1,null,"电子看板","eleckanban", "eleckanban/index","kanban",DEFAULT_SHOW_MENU); addDefaultFunctionMenu(1,null,"电子看板","eleckanban", "elecKanban/index","kanban",DEFAULT_SHOW_MENU);
//设备互联 //设备互联
addDefaultFunctionMenu(2,null,"设备互联","equipmentView", "neolight/equipmentView/index","sKanban"); addDefaultFunctionMenu(2,null,"设备互联","equipmentView", "neolight/equipmentView/index","sKanban");
......
...@@ -22,7 +22,11 @@ import cn.hutool.poi.excel.ExcelUtil; ...@@ -22,7 +22,11 @@ import cn.hutool.poi.excel.ExcelUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.neotel.smfcore.common.base.IExcelDownLoad; import com.neotel.smfcore.common.base.IExcelDownLoad;
import com.neotel.smfcore.common.config.file.CustomCellWriteHeightConfig;
import com.neotel.smfcore.common.config.file.CustomCellWriteWeightConfig;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.core.language.util.MessageUtils; import com.neotel.smfcore.core.language.util.MessageUtils;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -364,6 +368,26 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { ...@@ -364,6 +368,26 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
} }
/** /**
* 一次性导出excel
*/
public static void downloadExcelByConfig(String fileName, List<List<String>> headers, List<List<Object>> datas, HttpServletResponse response) throws IOException {
// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
//fileName = SYS_TEM_DIR + fileName + ".xlsx";
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
contentWriteCellStyle.setWrapped(true);
EasyExcel.write(response.getOutputStream()).sheet("Sheet1").head(headers)
.registerWriteHandler(new CustomCellWriteHeightConfig())
.registerWriteHandler(new CustomCellWriteWeightConfig())
.registerWriteHandler(new HorizontalCellStyleStrategy(null, contentWriteCellStyle))
.doWrite(datas);
}
/**
* 设置Header * 设置Header
* *
* @param fileName * @param fileName
......
...@@ -431,7 +431,7 @@ public class OrderController { ...@@ -431,7 +431,7 @@ public class OrderController {
data.add(exception); data.add(exception);
dataList.add(data); dataList.add(data);
} }
FileUtil.downloadExcel(liteOrder.getOrderNo(), header,dataList,response); FileUtil.downloadExcelByConfig(liteOrder.getOrderNo(), header,dataList,response);
} }
} }
......
...@@ -124,9 +124,9 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li ...@@ -124,9 +124,9 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
public void setBarcodeStr(String barcodeStr, int amount) { public void setBarcodeStr(String barcodeStr, int amount) {
if (StringUtils.isNotBlank((this.barcodeStr))) { if (StringUtils.isNotBlank((this.barcodeStr))) {
this.barcodeStr = this.barcodeStr + "\n" + barcodeStr + ":" + amount; this.barcodeStr = this.barcodeStr + "\n" + barcodeStr + " (" + amount + ")";
} else { } else {
this.barcodeStr = barcodeStr + ":" + amount; this.barcodeStr = barcodeStr + " (" + amount+")";
} }
} }
} }
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!