修复对象包含多个Excels导出异常问题

master
RuoYi 5 years ago committed by Limy
parent 220fd50829
commit a83e27ce52

@ -92,7 +92,7 @@ public class ExcelUtil<T>
/** /**
* *
*/ */
private List<Field> fields; private List<Object[]> fields;
/** /**
* *
@ -316,24 +316,12 @@ public class ExcelUtil<T>
// 产生一行 // 产生一行
Row row = sheet.createRow(0); Row row = sheet.createRow(0);
int excelsNo = 0; int column = 0;
// 写入各个字段的列头名称 // 写入各个字段的列头名称
for (int column = 0; column < fields.size(); column++) for (Object[] os : fields)
{ {
Field field = fields.get(column); Excel excel = (Excel) os[1];
if (field.isAnnotationPresent(Excel.class)) this.createCell(excel, row, column++);
{
Excel excel = field.getAnnotation(Excel.class);
createCell(excel, row, column);
}
if (field.isAnnotationPresent(Excels.class))
{
Excels attrs = field.getAnnotation(Excels.class);
Excel[] excels = attrs.value();
// 写入列名
Excel excel = excels[excelsNo++];
createCell(excel, row, column);
}
} }
if (Type.EXPORT.equals(type)) if (Type.EXPORT.equals(type))
{ {
@ -397,24 +385,14 @@ public class ExcelUtil<T>
row = sheet.createRow(i + 1 - startNo); row = sheet.createRow(i + 1 - startNo);
// 得到导出对象. // 得到导出对象.
T vo = (T) list.get(i); T vo = (T) list.get(i);
int excelsNo = 0; int column = 0;
for (int column = 0; column < fields.size(); column++) for (Object[] os : fields)
{ {
// 获得field. Field field = (Field) os[0];
Field field = fields.get(column); Excel excel = (Excel) os[1];
// 设置实体类私有属性可访问 // 设置实体类私有属性可访问
field.setAccessible(true); field.setAccessible(true);
if (field.isAnnotationPresent(Excel.class)) this.addCell(excel, row, vo, field, column++, cs);
{
addCell(field.getAnnotation(Excel.class), row, vo, field, column, cs);
}
if (field.isAnnotationPresent(Excels.class))
{
Excels attrs = field.getAnnotation(Excels.class);
Excel[] excels = attrs.value();
Excel excel = excels[excelsNo++];
addCell(excel, row, vo, field, column, cs);
}
} }
} }
} }
@ -720,7 +698,7 @@ public class ExcelUtil<T>
*/ */
private void createExcelField() private void createExcelField()
{ {
this.fields = new ArrayList<Field>(); this.fields = new ArrayList<Object[]>();
List<Field> tempFields = new ArrayList<>(); List<Field> tempFields = new ArrayList<>();
tempFields.addAll(Arrays.asList(clazz.getSuperclass().getDeclaredFields())); tempFields.addAll(Arrays.asList(clazz.getSuperclass().getDeclaredFields()));
tempFields.addAll(Arrays.asList(clazz.getDeclaredFields())); tempFields.addAll(Arrays.asList(clazz.getDeclaredFields()));
@ -752,7 +730,7 @@ public class ExcelUtil<T>
{ {
if (attr != null && (attr.type() == Type.ALL || attr.type() == type)) if (attr != null && (attr.type() == Type.ALL || attr.type() == type))
{ {
this.fields.add(field); this.fields.add(new Object[] { field, attr });
} }
} }

Loading…
Cancel
Save