private int writeFields(String prefix, List<? extends DataTableField> fields, int column) { int col = column; for (DataTableField field : fields) { if (StringUtils.isBlank(field.getName())) { throw new IllegalArgumentException("Field name must be not empty"); } if (field.isFillChildren()) { col = writeFields(prefix + field.getName() + ".", field.getAggregatedFields(), col); } else { writeCell(col, fieldNameRow, 1, 1, prefix + field.getName()); if (foreignKeyRow != NOT_INITIALIZED) { writeCell(col, foreignKeyRow, 1, 1, parseForeignKey(field.getForeignKey())); } writeCell(col, businessNameRow, 1, 1, field.getBusinessName()); col++; } } return col; }