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;
}