Browse Source

Fix bug list classType not same with head type when write

developing
焦松 4 years ago
parent
commit
3b89f724dd
  1. 4
      src/main/java/com/alibaba/excel/write/executor/ExcelWriteAddExecutor.java
  2. 33
      src/test/java/com/alibaba/easyexcel/test/temp/bug/DataType.java
  3. 38
      src/test/java/com/alibaba/easyexcel/test/temp/bug/ExcelCreat.java
  4. 28
      src/test/java/com/alibaba/easyexcel/test/temp/bug/HeadType.java

4
src/main/java/com/alibaba/excel/write/executor/ExcelWriteAddExecutor.java

@ -149,7 +149,7 @@ public class ExcelWriteAddExecutor extends AbstractExcelWriteExecutor {
Map<String, Field> ignoreMap = writeContext.currentWriteHolder().excelWriteHeadProperty().getIgnoreMap(); Map<String, Field> ignoreMap = writeContext.currentWriteHolder().excelWriteHeadProperty().getIgnoreMap();
initSortedAllFiledMapFieldList(oneRowData.getClass(), sortedAllFiledMap); initSortedAllFiledMapFieldList(oneRowData.getClass(), sortedAllFiledMap);
for (Map.Entry<Integer, Field> entry : sortedAllFiledMap.entrySet()) { for (Map.Entry<Integer, Field> entry : sortedAllFiledMap.entrySet()) {
cellIndex = entry.getKey(); // cellIndex = entry.getKey();
Field field = entry.getValue(); Field field = entry.getValue();
String filedName = field.getName(); String filedName = field.getName();
boolean uselessData = !beanMap.containsKey(filedName) || beanMapHandledSet.contains(filedName) boolean uselessData = !beanMap.containsKey(filedName) || beanMapHandledSet.contains(filedName)
@ -158,7 +158,7 @@ public class ExcelWriteAddExecutor extends AbstractExcelWriteExecutor {
continue; continue;
} }
Object value = beanMap.get(filedName); Object value = beanMap.get(filedName);
WriteHandlerUtils.beforeCellCreate(writeContext, row, null, cellIndex, relativeRowIndex, Boolean.FALSE); WriteHandlerUtils.beforeCellCreate(writeContext, row, null, cellIndex++, relativeRowIndex, Boolean.FALSE);
Cell cell = WorkBookUtil.createCell(row, cellIndex); Cell cell = WorkBookUtil.createCell(row, cellIndex);
WriteHandlerUtils.afterCellCreate(writeContext, cell, null, relativeRowIndex, Boolean.FALSE); WriteHandlerUtils.afterCellCreate(writeContext, cell, null, relativeRowIndex, Boolean.FALSE);
CellData cellData = converterAndSet(currentWriteHolder, value == null ? null : value.getClass(), cell, CellData cellData = converterAndSet(currentWriteHolder, value == null ? null : value.getClass(), cell,

33
src/test/java/com/alibaba/easyexcel/test/temp/bug/DataType.java

@ -0,0 +1,33 @@
package com.alibaba.easyexcel.test.temp.bug;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
/**
* @author jiaosong
* @desc
* @date 2021/4/6
*/
@Data
public class DataType {
/**
* 任务id
*/
@ExcelProperty("任务ID")
private Integer id;
@ExcelProperty("多余字段1")
private String firstSurplus;
@ExcelProperty("多余字段2")
private String secSurplus;
@ExcelProperty("多余字段3")
private String thirdSurplus;
@ExcelProperty(value = "备注1")
private String firstRemark;
@ExcelProperty(value = "备注2")
private String secRemark;
}

38
src/test/java/com/alibaba/easyexcel/test/temp/bug/ExcelCreat.java

@ -0,0 +1,38 @@
package com.alibaba.easyexcel.test.temp.bug;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Collections;
import java.util.List;
/**
* @author jiaosong
* @desc
* @date 2020/4/6
*/
public class ExcelCreat {
public static void main(String[] args) throws FileNotFoundException {
List<DataType> data = getData();
ExcelWriter excelWriter = null;
excelWriter = EasyExcel.write(new FileOutputStream("all.xlsx")).build();
WriteSheet writeSheet = EasyExcel.writerSheet(1, "test")
.head(HeadType.class)
.build();
excelWriter.write(data, writeSheet);
excelWriter.finish();
}
private static List<DataType> getData() {
DataType vo = new DataType();
vo.setId(738);
vo.setFirstRemark("1222");
vo.setSecRemark("22222");
return Collections.singletonList(vo);
}
}

28
src/test/java/com/alibaba/easyexcel/test/temp/bug/HeadType.java

@ -0,0 +1,28 @@
package com.alibaba.easyexcel.test.temp.bug;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
/**
* @author jiaosong
* @desc
* @date 2021/4/6
*/
@Data
public class HeadType {
/**
* 任务id
*/
@ExcelProperty("任务ID")
private Integer id;
@ExcelProperty(value = "备注1")
private String firstRemark;
@ExcelProperty(value = "备注2")
private String secRemark;
}
Loading…
Cancel
Save