Browse Source

新增写入`class`和`list`同时传入 `field`数量不一致报错 #1333

developing
Jiaju Zhuang 5 years ago
parent
commit
98ec9f8080
  1. 20
      src/main/java/com/alibaba/excel/write/property/ExcelWriteHeadProperty.java
  2. 9
      src/test/java/com/alibaba/easyexcel/test/temp/WriteV34Test.java
  3. 1
      update.md

20
src/main/java/com/alibaba/excel/write/property/ExcelWriteHeadProperty.java

@ -39,6 +39,7 @@ import com.alibaba.excel.metadata.property.StyleProperty;
* @author jipengfei * @author jipengfei
*/ */
public class ExcelWriteHeadProperty extends ExcelHeadProperty { public class ExcelWriteHeadProperty extends ExcelHeadProperty {
private RowHeightProperty headRowHeightProperty; private RowHeightProperty headRowHeightProperty;
private RowHeightProperty contentRowHeightProperty; private RowHeightProperty contentRowHeightProperty;
private OnceAbsoluteMergeProperty onceAbsoluteMergeProperty; private OnceAbsoluteMergeProperty onceAbsoluteMergeProperty;
@ -49,21 +50,24 @@ public class ExcelWriteHeadProperty extends ExcelHeadProperty {
return; return;
} }
this.headRowHeightProperty = this.headRowHeightProperty =
RowHeightProperty.build((HeadRowHeight)headClazz.getAnnotation(HeadRowHeight.class)); RowHeightProperty.build((HeadRowHeight) headClazz.getAnnotation(HeadRowHeight.class));
this.contentRowHeightProperty = this.contentRowHeightProperty =
RowHeightProperty.build((ContentRowHeight)headClazz.getAnnotation(ContentRowHeight.class)); RowHeightProperty.build((ContentRowHeight) headClazz.getAnnotation(ContentRowHeight.class));
this.onceAbsoluteMergeProperty = this.onceAbsoluteMergeProperty =
OnceAbsoluteMergeProperty.build((OnceAbsoluteMerge)headClazz.getAnnotation(OnceAbsoluteMerge.class)); OnceAbsoluteMergeProperty.build((OnceAbsoluteMerge) headClazz.getAnnotation(OnceAbsoluteMerge.class));
ColumnWidth parentColumnWidth = (ColumnWidth)headClazz.getAnnotation(ColumnWidth.class); ColumnWidth parentColumnWidth = (ColumnWidth) headClazz.getAnnotation(ColumnWidth.class);
HeadStyle parentHeadStyle = (HeadStyle)headClazz.getAnnotation(HeadStyle.class); HeadStyle parentHeadStyle = (HeadStyle) headClazz.getAnnotation(HeadStyle.class);
HeadFontStyle parentHeadFontStyle = (HeadFontStyle)headClazz.getAnnotation(HeadFontStyle.class); HeadFontStyle parentHeadFontStyle = (HeadFontStyle) headClazz.getAnnotation(HeadFontStyle.class);
ContentStyle parentContentStyle = (ContentStyle)headClazz.getAnnotation(ContentStyle.class); ContentStyle parentContentStyle = (ContentStyle) headClazz.getAnnotation(ContentStyle.class);
ContentFontStyle parentContentFontStyle = (ContentFontStyle)headClazz.getAnnotation(ContentFontStyle.class); ContentFontStyle parentContentFontStyle = (ContentFontStyle) headClazz.getAnnotation(ContentFontStyle.class);
for (Map.Entry<Integer, ExcelContentProperty> entry : getContentPropertyMap().entrySet()) { for (Map.Entry<Integer, ExcelContentProperty> entry : getContentPropertyMap().entrySet()) {
Integer index = entry.getKey(); Integer index = entry.getKey();
ExcelContentProperty excelContentPropertyData = entry.getValue(); ExcelContentProperty excelContentPropertyData = entry.getValue();
if (excelContentPropertyData == null) {
throw new IllegalArgumentException("Passing in the class and list the head, the two must be the same size.");
}
Field field = excelContentPropertyData.getField(); Field field = excelContentPropertyData.getField();
Head headData = getHeadMap().get(index); Head headData = getHeadMap().get(index);
ColumnWidth columnWidth = field.getAnnotation(ColumnWidth.class); ColumnWidth columnWidth = field.getAnnotation(ColumnWidth.class);

9
src/test/java/com/alibaba/easyexcel/test/temp/WriteV34Test.java

@ -54,7 +54,7 @@ public class WriteV34Test {
new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle); new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
EasyExcel.write(fileName).head(head()).registerWriteHandler(horizontalCellStyleStrategy).sheet("模板") EasyExcel.write(fileName,DemoData.class).head(head()).registerWriteHandler(horizontalCellStyleStrategy).sheet("模板")
.doWrite(data(1)); .doWrite(data(1));
} }
@ -63,13 +63,18 @@ public class WriteV34Test {
List<List<String>> list = new ArrayList<List<String>>(); List<List<String>> list = new ArrayList<List<String>>();
List<String> head0 = new ArrayList<String>(); List<String> head0 = new ArrayList<String>();
head0.add("字符串" + System.currentTimeMillis()); head0.add("字符串" + System.currentTimeMillis());
head0.add("再找找");
List<String> head1 = new ArrayList<String>(); List<String> head1 = new ArrayList<String>();
head1.add("数字" + System.currentTimeMillis()); head1.add("数字" + System.currentTimeMillis());
List<String> head2 = new ArrayList<String>(); List<String> head2 = new ArrayList<String>();
head2.add("日期" + System.currentTimeMillis()); head2.add("日期" + System.currentTimeMillis());
List<String> head3 = new ArrayList<String>();
head3.add("日期" + System.currentTimeMillis());
list.add(head0); list.add(head0);
list.add(head1); list.add(head1);
list.add(head2); list.add(head2); list.add(head3);
return list; return list;
} }

1
update.md

@ -5,6 +5,7 @@
* 写入`sheet`不设置`index`和`name`默认不为0的问题 * 写入`sheet`不设置`index`和`name`默认不为0的问题
* 修复多个`sheet`不按照顺序写入 会乱序的bug [Issue #1332](https://github.com/alibaba/easyexcel/issues/1332) * 修复多个`sheet`不按照顺序写入 会乱序的bug [Issue #1332](https://github.com/alibaba/easyexcel/issues/1332)
* 修改head是List时,内容单元格的样式不生效 [Issue #1339](https://github.com/alibaba/easyexcel/issues/1339) * 修改head是List时,内容单元格的样式不生效 [Issue #1339](https://github.com/alibaba/easyexcel/issues/1339)
* 新增写入`class`和`list`同时传入 `field`数量不一致报错 [Issue #1333](https://github.com/alibaba/easyexcel/issues/1333)
# 2.2.3 # 2.2.3

Loading…
Cancel
Save