diff --git a/openbis_ng_ui/src/js/components/common/grid/GridController.js b/openbis_ng_ui/src/js/components/common/grid/GridController.js
index e43161b6b7169ab24e17a41cb26423a8fbc6858a..020636d595ee60bebf32a1cda06891249bd91de0 100644
--- a/openbis_ng_ui/src/js/components/common/grid/GridController.js
+++ b/openbis_ng_ui/src/js/components/common/grid/GridController.js
@@ -1075,14 +1075,17 @@ export default class GridController {
     } else if (
       state.exportOptions.columns === GridExportOptions.VISIBLE_COLUMNS
     ) {
-      const { newAllColumns } = await this._loadColumns(
-        exportedRows,
-        state.columnsVisibility,
-        state.columnsSorting
-      )
+      const { newAllColumns, newColumnsVisibility, newColumnsSorting } =
+        await this._loadColumns(
+          exportedRows,
+          state.columnsVisibility,
+          state.columnsSorting
+        )
+
+      this._sortColumns(newAllColumns, newColumnsSorting)
 
       newAllColumns.forEach(column => {
-        if (column.exportableProperty) {
+        if (column.exportableProperty && newColumnsVisibility[column.name]) {
           const propertyCode = column.exportableProperty.code
           const propertyTypesMap = column.exportableProperty.types