设备导出excel 及模版下载
This commit is contained in:
parent
112a69babe
commit
946c2e27db
|
|
@ -9,8 +9,8 @@ public class ExcelExportField extends ImportExcelField {
|
|||
|
||||
|
||||
|
||||
@ExcelProperty(value="",index = 3)
|
||||
private String cellFourth;
|
||||
// @ExcelProperty(value="",index = 3)
|
||||
// private String cellFourth;
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ public class ExportDeviceHelper {
|
|||
.needHead(false)//是否需要head
|
||||
.build();
|
||||
buildHeader(2, voObj.getDeviceInfo(), sheet, writer, tableNoCounting);
|
||||
buildList(voObj.getSingleList(), sheet, writer, tableNoCounting);
|
||||
buildList(voObj.getSingleList(), sheet, writer, tableNoCounting);
|
||||
writer.finish();
|
||||
|
||||
|
||||
|
|
@ -170,13 +170,18 @@ public class ExportDeviceHelper {
|
|||
int columnWidth = cell.getStringCellValue().getBytes().length;
|
||||
switch (cellIndex) {
|
||||
case 0:
|
||||
columnWidth = 30;
|
||||
columnWidth = 50;
|
||||
break;
|
||||
case 1:
|
||||
columnWidth = 40;
|
||||
columnWidth = 70;
|
||||
break;
|
||||
case 2:
|
||||
columnWidth = 80;
|
||||
columnWidth = 20;
|
||||
break;
|
||||
case 3:
|
||||
|
||||
columnWidth = 40;
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
@ -190,57 +195,58 @@ public class ExportDeviceHelper {
|
|||
// 自定义表头样式处理
|
||||
|
||||
if (context.getHead() != null && context.getHead().booleanValue()) {
|
||||
WriteSheetHolder writeSheetHolder = context.getWriteSheetHolder();
|
||||
Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
|
||||
CellStyle cellStyle = initCellStyle(workbook);
|
||||
if(cellIndex==0 || cellIndex ==1) {
|
||||
WriteSheetHolder writeSheetHolder = context.getWriteSheetHolder();
|
||||
Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
|
||||
|
||||
XSSFCellStyle xssfCellStyle = (XSSFCellStyle) workbook.createCellStyle();
|
||||
xssfCellStyle.cloneStyleFrom(cellStyle);
|
||||
xssfCellStyle.getFont().setBold(true);
|
||||
|
||||
xssfCellStyle.setAlignment(HorizontalAlignment.LEFT);
|
||||
xssfCellStyle.setFillForegroundColor(new XSSFColor(new java.awt.Color(255, 255, 0)));
|
||||
xssfCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
||||
cell.setCellStyle(xssfCellStyle);
|
||||
context.getFirstCellData().setWriteCellStyle(null); //必须
|
||||
CellStyle cellStyle = initCellStyle(workbook);
|
||||
|
||||
XSSFCellStyle xssfCellStyle = (XSSFCellStyle) workbook.createCellStyle();
|
||||
xssfCellStyle.cloneStyleFrom(cellStyle);
|
||||
xssfCellStyle.getFont().setBold(true);
|
||||
|
||||
xssfCellStyle.setAlignment(HorizontalAlignment.LEFT);
|
||||
xssfCellStyle.setFillForegroundColor(new XSSFColor(new java.awt.Color(255, 255, 0)));
|
||||
xssfCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
||||
cell.setCellStyle(xssfCellStyle);
|
||||
|
||||
|
||||
|
||||
// WriteCellStyle.merge( xssfCellStyle., context.getFirstCellData().getOrCreateStyle());
|
||||
context.getFirstCellData().setWriteCellStyle(null); //必须
|
||||
|
||||
|
||||
|
||||
}
|
||||
if(cellIndex ==1){
|
||||
WriteSheetHolder writeSheetHolder = context.getWriteSheetHolder();
|
||||
Sheet sheet = writeSheetHolder.getSheet();
|
||||
CellRangeAddress cellRangeAddress = new CellRangeAddress(rowIndex, rowIndex, 0, 1);
|
||||
sheet.addMergedRegion(cellRangeAddress);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (context.getHead() == null || !context.getHead().booleanValue()) {
|
||||
|
||||
if (cellIndex == 1 || cellIndex == 2) {
|
||||
WriteSheetHolder writeSheetHolder = context.getWriteSheetHolder();
|
||||
Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
|
||||
|
||||
// WriteCellStyle contentWriteCellStyle = EasyExcelUtil.getBodyStyle();
|
||||
// CellStyle cellStyle = StyleUtil.buildCellStyle(workbook, null, contentWriteCellStyle);
|
||||
// if (context.getHead() == null || !context.getHead().booleanValue()) {
|
||||
//
|
||||
// XSSFCellStyle xssfCellStyle = (XSSFCellStyle) workbook.createCellStyle();
|
||||
// xssfCellStyle.cloneStyleFrom(cellStyle);
|
||||
// xssfCellStyle.setAlignment(HorizontalAlignment.LEFT);
|
||||
// xssfCellStyle.setFont(new XSSFFont());
|
||||
// xssfCellStyle.getFont().setBold(false);
|
||||
// xssfCellStyle.getFont().setFontName("宋体");
|
||||
// xssfCellStyle.getFont().setFontHeightInPoints((short) 11);
|
||||
// if (cellIndex == 1 || cellIndex == 2) {
|
||||
// WriteSheetHolder writeSheetHolder = context.getWriteSheetHolder();
|
||||
// Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
|
||||
//
|
||||
// context.getFirstCellData().setWriteCellStyle(null); //必须
|
||||
// cell.setCellStyle(xssfCellStyle);
|
||||
|
||||
|
||||
WriteCellData<?> writeCellData = context.getFirstCellData();
|
||||
WriteCellStyle customCellStyle = EasyExcelUtil.getBodyStyle();
|
||||
|
||||
WriteFont customFont = new WriteFont();
|
||||
customFont.setFontName("宋体");
|
||||
customFont.setFontHeightInPoints((short) 11);
|
||||
customFont.setBold(false);
|
||||
customCellStyle.setWriteFont(customFont);
|
||||
customCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
|
||||
WriteCellStyle.merge(customCellStyle, writeCellData.getOrCreateStyle());
|
||||
|
||||
}
|
||||
}
|
||||
// WriteCellData<?> writeCellData = context.getFirstCellData();
|
||||
// WriteCellStyle customCellStyle = EasyExcelUtil.getBodyStyle();
|
||||
//
|
||||
// WriteFont customFont = new WriteFont();
|
||||
// customFont.setFontName("宋体");
|
||||
// customFont.setFontHeightInPoints((short) 11);
|
||||
// customFont.setBold(false);
|
||||
// customCellStyle.setWriteFont(customFont);
|
||||
// customCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
|
||||
// WriteCellStyle.merge(customCellStyle, writeCellData.getOrCreateStyle());
|
||||
//
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -256,13 +262,14 @@ public class ExportDeviceHelper {
|
|||
List<String> head1 = new ArrayList<String>();
|
||||
head1.add(customer);
|
||||
List<String> head2 = new ArrayList<String>();
|
||||
head2.add(customer);
|
||||
|
||||
head2.add("");
|
||||
List<String> head3 = new ArrayList<String>();
|
||||
head3.add("");
|
||||
|
||||
list.add(head0);
|
||||
list.add(head1);
|
||||
list.add(head2);
|
||||
|
||||
list.add(head3);
|
||||
return list;
|
||||
}
|
||||
|
||||
|
|
@ -282,7 +289,10 @@ public class ExportDeviceHelper {
|
|||
.writerTable(tableNoCounting.get())
|
||||
.needHead(Boolean.FALSE)
|
||||
.registerWriteHandler(
|
||||
new OnceAbsoluteMergeStrategy(tableNoCounting.get(), tableNoCounting.get(), 0, maxColumn)
|
||||
new OnceAbsoluteMergeStrategy(0, 0, 0, maxColumn)
|
||||
)
|
||||
.registerWriteHandler(
|
||||
new OnceAbsoluteMergeStrategy(1, 1, 0, 1)
|
||||
)
|
||||
.registerWriteHandler(new CellWriteHandler() {
|
||||
@Override
|
||||
|
|
@ -298,10 +308,17 @@ public class ExportDeviceHelper {
|
|||
})
|
||||
.registerWriteHandler(new HorizontalCellStyleStrategy(EasyExcelUtil.getHeadStyle(), body))
|
||||
.build();
|
||||
|
||||
List<String> cellList = new ArrayList<>();
|
||||
cellList.add(String.format("%s %s", header.getDeviceNo(), header.getDeviceName()));
|
||||
cellList.add(StrUtil.format("{} {}", header.getDeviceNo(), header.getDeviceName()));
|
||||
List<String> cellList2 = new ArrayList<>();
|
||||
cellList2.add("选配内容");
|
||||
cellList2.add("");
|
||||
cellList2.add("标配\\可选");
|
||||
cellList2.add("备注");
|
||||
List<List<String>> rowList = new ArrayList<>();
|
||||
rowList.add(cellList);
|
||||
rowList.add(cellList2);
|
||||
//写入表格
|
||||
writer.write(rowList, sheet, table);
|
||||
}
|
||||
|
|
@ -335,18 +352,21 @@ public class ExportDeviceHelper {
|
|||
for (OptionalEbomImportVO item2 : list2) {
|
||||
{
|
||||
String opChildName = item2.getOptionName();
|
||||
String optionChildDrawingNoName = item2.getOptionDrawingNo();
|
||||
String optionChildDrawingNo = item2.getOptionDrawingNo();
|
||||
List<OptionalEbomImportChildVO> list3 = item2.getChild();
|
||||
for (OptionalEbomImportChildVO item3 : list3) {
|
||||
ImportExcelField excelField = new ImportExcelField();
|
||||
excelField.setCellFirst(optionParentDrawingNoName);
|
||||
excelField.setCellSecond(String.format("%s %s", optionChildDrawingNoName, opChildName));
|
||||
excelField.setCellFirst(StrUtil.format("{} {}",optionChildDrawingNo,opChildName));
|
||||
|
||||
if(StrUtil.isEmpty(item3.getDrawingNo())) {
|
||||
excelField.setCellThird(String.format("%s:(%s)", item3.getMaterialName(), item3.getChooseStatus() == 1 ? "标配" : "可选"));
|
||||
excelField.setCellSecond(StrUtil.format("{}", item3.getMaterialName()));
|
||||
}else {
|
||||
excelField.setCellThird(String.format("%s:%s(%s)", item3.getDrawingNo(), item3.getMaterialName(), item3.getChooseStatus() == 1 ? "标配" : "可选"));
|
||||
excelField.setCellSecond(StrUtil.format ("{}:{}", item3.getDrawingNo(), item3.getMaterialName()));
|
||||
|
||||
}
|
||||
|
||||
excelField.setCellThird(StrUtil.format("{}",item3.getChooseStatus() == 1 ? "标配" : "可选")) ;
|
||||
excelField.setCellFourth(item3.getRemak()); ;
|
||||
items.add(excelField);
|
||||
|
||||
}
|
||||
|
|
@ -358,11 +378,12 @@ public class ExportDeviceHelper {
|
|||
if (CollectionUtil.isNotEmpty(items)) {
|
||||
tableNoCounting.getAndIncrement();
|
||||
WriteTable table = EasyExcel.writerTable(tableNoCounting.get())
|
||||
.head(getHeader(opParentName))
|
||||
.head(getHeader(StrUtil.format("{} {}",opParentName,optionParentDrawingNoName)))
|
||||
.needHead(Boolean.TRUE)//需要Header
|
||||
.automaticMergeHead(false)
|
||||
.registerWriteHandler(EasyExcelUtil.getDefaultStyle())//传入自定义样式
|
||||
.registerWriteHandler(new HeaderStyleCustomCellWriteHandler())
|
||||
.registerWriteHandler(new ColumnMergeStrategy(0, new int[]{0, 1}))
|
||||
.registerWriteHandler(new ColumnMergeStrategy(1, new int[]{0}))
|
||||
.build();
|
||||
writer.write(items, sheet, table);
|
||||
items.clear();
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ public class ImportExcelField{
|
|||
|
||||
|
||||
@ExcelProperty(value="",index = 3)
|
||||
private String cellRemark;
|
||||
private String cellFourth;
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,384 @@
|
|||
package com.nflg.product.bomnew.excel;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.alibaba.excel.ExcelWriter;
|
||||
import com.alibaba.excel.metadata.Head;
|
||||
import com.alibaba.excel.metadata.data.WriteCellData;
|
||||
import com.alibaba.excel.support.ExcelTypeEnum;
|
||||
import com.alibaba.excel.util.StyleUtil;
|
||||
import com.alibaba.excel.write.handler.AbstractCellWriteHandler;
|
||||
import com.alibaba.excel.write.handler.CellWriteHandler;
|
||||
import com.alibaba.excel.write.handler.context.CellWriteHandlerContext;
|
||||
import com.alibaba.excel.write.merge.OnceAbsoluteMergeStrategy;
|
||||
import com.alibaba.excel.write.metadata.WriteSheet;
|
||||
import com.alibaba.excel.write.metadata.WriteTable;
|
||||
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
|
||||
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
|
||||
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
|
||||
import com.alibaba.excel.write.metadata.style.WriteFont;
|
||||
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
|
||||
import com.nflg.product.bomnew.pojo.vo.OptionalEbomConfigAggregVO;
|
||||
import com.nflg.product.bomnew.pojo.vo.OptionalEbomImportChildVO;
|
||||
import com.nflg.product.bomnew.pojo.vo.OptionalEbomImportVO;
|
||||
import com.nflg.product.bomnew.pojo.vo.OptionalEbomMainVO;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.apache.poi.ss.util.CellRangeAddress;
|
||||
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
|
||||
import org.apache.poi.xssf.usermodel.XSSFColor;
|
||||
|
||||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
public class OldExportDeviceHelper {
|
||||
|
||||
|
||||
public void export(OutputStream filePath, OptionalEbomConfigAggregVO voObj) {
|
||||
|
||||
//使用一个计数器记录当前已经写了几个表格
|
||||
AtomicInteger tableNoCounting = new AtomicInteger(0);
|
||||
ExcelWriter writer = EasyExcel.write(filePath)//指定写入的流
|
||||
.excelType(ExcelTypeEnum.XLSX)//指定Excel文件类型,如xlsx、xls
|
||||
.autoCloseStream(Boolean.FALSE)
|
||||
.build();
|
||||
|
||||
WriteSheet sheet = EasyExcel
|
||||
.writerSheet("EBOM导出")//指定写入的sheet
|
||||
.needHead(false)//是否需要head
|
||||
.build();
|
||||
buildHeader(2, voObj.getDeviceInfo(), sheet, writer, tableNoCounting);
|
||||
buildList(voObj.getSingleList(), sheet, writer, tableNoCounting);
|
||||
writer.finish();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static class ColumnMergeStrategy implements CellWriteHandler {
|
||||
|
||||
|
||||
private int[] mergeColumnIndex;
|
||||
private int mergeRowIndex;
|
||||
|
||||
public ColumnMergeStrategy(int mergeRowIndex, int[] mergeColumnIndex) {
|
||||
this.mergeRowIndex = mergeRowIndex;
|
||||
this.mergeColumnIndex = mergeColumnIndex;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<WriteCellData<?>> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
|
||||
if (!isHead) {
|
||||
//当前行
|
||||
int curRowIndex = cell.getRowIndex();
|
||||
//当前列
|
||||
int curColIndex = cell.getColumnIndex();
|
||||
// System.out.println(StrUtil.format("curRowIndex {} curColIndex {}",curRowIndex,curColIndex));
|
||||
if (curRowIndex > mergeRowIndex) {
|
||||
for (int i = 0; i < mergeColumnIndex.length; i++) {
|
||||
if (curColIndex == mergeColumnIndex[i]) {
|
||||
mergeWithPrevRow(writeSheetHolder, cell, curRowIndex, curColIndex);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 当前单元格向上合并
|
||||
*
|
||||
* @param writeSheetHolder
|
||||
* @param cell 当前单元格
|
||||
* @param curRowIndex 当前行
|
||||
* @param curColIndex 当前列
|
||||
*/
|
||||
private void mergeWithPrevRow(WriteSheetHolder writeSheetHolder, Cell cell, int curRowIndex, int curColIndex) {
|
||||
Object curData = cell.getCellTypeEnum() == CellType.STRING ? cell.getStringCellValue() : cell.getNumericCellValue();
|
||||
Cell preCell = cell.getSheet().getRow(curRowIndex - 1).getCell(curColIndex);
|
||||
Object preData = preCell.getCellTypeEnum() == CellType.STRING ? preCell.getStringCellValue() : preCell.getNumericCellValue();
|
||||
// 将当前单元格数据与上一个单元格数据比较
|
||||
Boolean dataBool = preData.equals(curData);
|
||||
if (dataBool) {
|
||||
Sheet sheet = writeSheetHolder.getSheet();
|
||||
List<CellRangeAddress> mergeRegions = sheet.getMergedRegions();
|
||||
boolean isMerged = false;
|
||||
for (int i = 0; i < mergeRegions.size() && !isMerged; i++) {
|
||||
CellRangeAddress cellRangeAddr = mergeRegions.get(i);
|
||||
// 若上一个单元格已经被合并,则先移出原有的合并单元,再重新添加合并单元
|
||||
if (cellRangeAddr.isInRange(curRowIndex - 1, curColIndex)) {
|
||||
sheet.removeMergedRegion(i);
|
||||
cellRangeAddr.setLastRow(curRowIndex);
|
||||
sheet.addMergedRegion(cellRangeAddr);
|
||||
isMerged = true;
|
||||
}
|
||||
}
|
||||
// 若上一个单元格未被合并,则新增合并单元
|
||||
if (!isMerged) {
|
||||
CellRangeAddress cellRangeAddress = new CellRangeAddress(curRowIndex - 1, curRowIndex, curColIndex, curColIndex);
|
||||
sheet.addMergedRegion(cellRangeAddress);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class HeaderStyleCustomCellWriteHandler extends AbstractCellWriteHandler {
|
||||
@Override
|
||||
public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,
|
||||
Row row, Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) {
|
||||
// 设置行高
|
||||
int rowIndex = row.getRowNum();
|
||||
short height = 400;
|
||||
row.setHeight(height);
|
||||
}
|
||||
|
||||
private CellStyle initCellStyle(Workbook workbook) {
|
||||
WriteCellStyle contentWriteCellStyle = EasyExcelUtil.getHeadStyle();
|
||||
CellStyle headWriteCellStyle = StyleUtil.buildCellStyle(workbook, null, contentWriteCellStyle);
|
||||
return headWriteCellStyle;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void afterCellDispose(CellWriteHandlerContext context) {
|
||||
Cell cell = context.getCell();
|
||||
int rowIndex = cell.getRowIndex();
|
||||
|
||||
int cellIndex = cell.getColumnIndex();
|
||||
|
||||
// 自定义宽度处理
|
||||
if (!context.getHead()) {
|
||||
int columnWidth = cell.getStringCellValue().getBytes().length;
|
||||
switch (cellIndex) {
|
||||
case 0:
|
||||
columnWidth = 30;
|
||||
break;
|
||||
case 1:
|
||||
columnWidth = 40;
|
||||
break;
|
||||
case 2:
|
||||
columnWidth = 80;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (columnWidth > 255) {
|
||||
columnWidth = 255;
|
||||
}
|
||||
context.getWriteSheetHolder().getSheet().setColumnWidth(cellIndex, columnWidth * 256);
|
||||
}
|
||||
// 自定义表头样式处理
|
||||
|
||||
if (context.getHead() != null && context.getHead().booleanValue()) {
|
||||
WriteSheetHolder writeSheetHolder = context.getWriteSheetHolder();
|
||||
Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
|
||||
CellStyle cellStyle = initCellStyle(workbook);
|
||||
|
||||
XSSFCellStyle xssfCellStyle = (XSSFCellStyle) workbook.createCellStyle();
|
||||
xssfCellStyle.cloneStyleFrom(cellStyle);
|
||||
xssfCellStyle.getFont().setBold(true);
|
||||
|
||||
xssfCellStyle.setAlignment(HorizontalAlignment.LEFT);
|
||||
xssfCellStyle.setFillForegroundColor(new XSSFColor(new java.awt.Color(255, 255, 0)));
|
||||
xssfCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
||||
cell.setCellStyle(xssfCellStyle);
|
||||
context.getFirstCellData().setWriteCellStyle(null); //必须
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (context.getHead() == null || !context.getHead().booleanValue()) {
|
||||
|
||||
if (cellIndex == 1 || cellIndex == 2) {
|
||||
WriteSheetHolder writeSheetHolder = context.getWriteSheetHolder();
|
||||
Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
|
||||
|
||||
// WriteCellStyle contentWriteCellStyle = EasyExcelUtil.getBodyStyle();
|
||||
// CellStyle cellStyle = StyleUtil.buildCellStyle(workbook, null, contentWriteCellStyle);
|
||||
//
|
||||
// XSSFCellStyle xssfCellStyle = (XSSFCellStyle) workbook.createCellStyle();
|
||||
// xssfCellStyle.cloneStyleFrom(cellStyle);
|
||||
// xssfCellStyle.setAlignment(HorizontalAlignment.LEFT);
|
||||
// xssfCellStyle.setFont(new XSSFFont());
|
||||
// xssfCellStyle.getFont().setBold(false);
|
||||
// xssfCellStyle.getFont().setFontName("宋体");
|
||||
// xssfCellStyle.getFont().setFontHeightInPoints((short) 11);
|
||||
//
|
||||
// context.getFirstCellData().setWriteCellStyle(null); //必须
|
||||
// cell.setCellStyle(xssfCellStyle);
|
||||
|
||||
|
||||
WriteCellData<?> writeCellData = context.getFirstCellData();
|
||||
WriteCellStyle customCellStyle = EasyExcelUtil.getBodyStyle();
|
||||
|
||||
WriteFont customFont = new WriteFont();
|
||||
customFont.setFontName("宋体");
|
||||
customFont.setFontHeightInPoints((short) 11);
|
||||
customFont.setBold(false);
|
||||
customCellStyle.setWriteFont(customFont);
|
||||
customCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
|
||||
WriteCellStyle.merge(customCellStyle, writeCellData.getOrCreateStyle());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public List<List<String>> getHeader(String headStr) {
|
||||
String customer = headStr;
|
||||
List<List<String>> list = new ArrayList<List<String>>();
|
||||
List<String> head0 = new ArrayList<String>();
|
||||
head0.add(customer);
|
||||
List<String> head1 = new ArrayList<String>();
|
||||
head1.add(customer);
|
||||
List<String> head2 = new ArrayList<String>();
|
||||
head2.add(customer);
|
||||
|
||||
|
||||
list.add(head0);
|
||||
list.add(head1);
|
||||
list.add(head2);
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
public void buildHeader(int maxColumn, OptionalEbomMainVO header, WriteSheet sheet, ExcelWriter writer, AtomicInteger tableNoCounting) {
|
||||
if (header == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
WriteCellStyle body = EasyExcelUtil.getBodyStyle();
|
||||
if (body.getWriteFont() != null) {
|
||||
body.getWriteFont().setBold(true);
|
||||
}
|
||||
|
||||
|
||||
WriteTable table = EasyExcel
|
||||
.writerTable(tableNoCounting.get())
|
||||
.needHead(Boolean.FALSE)
|
||||
.registerWriteHandler(
|
||||
new OnceAbsoluteMergeStrategy(tableNoCounting.get(), tableNoCounting.get(), 0, maxColumn)
|
||||
)
|
||||
.registerWriteHandler(new CellWriteHandler() {
|
||||
@Override
|
||||
public void afterCellDispose(CellWriteHandlerContext context) {
|
||||
Cell cell = context.getCell();
|
||||
int rowIndex = cell.getRowIndex();
|
||||
int cellIndex = cell.getColumnIndex();
|
||||
if (rowIndex == 0) {
|
||||
short height = 500;
|
||||
context.getRow().setHeight(height);
|
||||
}
|
||||
}
|
||||
})
|
||||
.registerWriteHandler(new HorizontalCellStyleStrategy(EasyExcelUtil.getHeadStyle(), body))
|
||||
.build();
|
||||
List<String> cellList = new ArrayList<>();
|
||||
cellList.add(String.format("%s %s", header.getDeviceNo(), header.getDeviceName()));
|
||||
List<List<String>> rowList = new ArrayList<>();
|
||||
rowList.add(cellList);
|
||||
//写入表格
|
||||
writer.write(rowList, sheet, table);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建列表部分
|
||||
*/
|
||||
public void buildList(List<OptionalEbomImportVO> listTable, WriteSheet sheet, ExcelWriter writer, AtomicInteger tableNoCounting) {
|
||||
|
||||
if (CollectionUtil.isEmpty(listTable)) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<ImportExcelField> items = new ArrayList<>();
|
||||
String opParentName="";
|
||||
String optionParentDrawingNoName="";
|
||||
|
||||
for ( int row =0;row< listTable.size();row++ ) {
|
||||
|
||||
OptionalEbomImportVO item1=listTable.get(row);
|
||||
opParentName = item1.getOptionName();
|
||||
optionParentDrawingNoName = item1.getOptionDrawingNo();
|
||||
|
||||
List<OptionalEbomImportVO> list2 = item1.getChild();
|
||||
// List<String> cellList = new ArrayList<>();
|
||||
// cellList.add(opParentName);
|
||||
|
||||
|
||||
|
||||
|
||||
for (OptionalEbomImportVO item2 : list2) {
|
||||
{
|
||||
String opChildName = item2.getOptionName();
|
||||
String optionChildDrawingNoName = item2.getOptionDrawingNo();
|
||||
List<OptionalEbomImportChildVO> list3 = item2.getChild();
|
||||
for (OptionalEbomImportChildVO item3 : list3) {
|
||||
ImportExcelField excelField = new ImportExcelField();
|
||||
excelField.setCellFirst(optionParentDrawingNoName);
|
||||
excelField.setCellSecond(String.format("%s %s", optionChildDrawingNoName, opChildName));
|
||||
if(StrUtil.isEmpty(item3.getDrawingNo())) {
|
||||
excelField.setCellThird(String.format("%s:(%s)", item3.getMaterialName(), item3.getChooseStatus() == 1 ? "标配" : "可选"));
|
||||
}else {
|
||||
excelField.setCellThird(String.format("%s:%s(%s)", item3.getDrawingNo(), item3.getMaterialName(), item3.getChooseStatus() == 1 ? "标配" : "可选"));
|
||||
|
||||
}
|
||||
items.add(excelField);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (CollectionUtil.isNotEmpty(items)) {
|
||||
tableNoCounting.getAndIncrement();
|
||||
WriteTable table = EasyExcel.writerTable(tableNoCounting.get())
|
||||
.head(getHeader(opParentName))
|
||||
.needHead(Boolean.TRUE)//需要Header
|
||||
.registerWriteHandler(EasyExcelUtil.getDefaultStyle())//传入自定义样式
|
||||
.registerWriteHandler(new HeaderStyleCustomCellWriteHandler())
|
||||
.registerWriteHandler(new ColumnMergeStrategy(0, new int[]{0, 1}))
|
||||
.build();
|
||||
writer.write(items, sheet, table);
|
||||
items.clear();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -128,7 +128,7 @@ public class OptionalExcelService {
|
|||
levelDto3.setChooseStatus(OptionalBomConstant.ChooseStatusEnum.CHOOSE_STATUS_NO.getValue());
|
||||
}
|
||||
|
||||
levelDto3.setRemak(item.getCellRemark());
|
||||
levelDto3.setRemak(item.getCellFourth());
|
||||
optionalEbomImportLevel2Dto.getChild().add(levelDto3);
|
||||
// levelDto3.setMaterialName(materialName.replace("(标配)", "").replace("(可选)", ""));
|
||||
// levelDto3.setMaterialDesc(levelDto3.getMaterialDesc());
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Reference in New Issue