diff --git a/package-lock.json b/package-lock.json
index 7bc71711e3314c14c37deb1b6013a78529a4abee..6c4e69a1e451fd10822c9f2d5b5b3441fa98393f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6962,6 +6962,11 @@
       "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz",
       "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg=="
     },
+    "js-file-download": {
+      "version": "0.4.12",
+      "resolved": "https://registry.npmjs.org/js-file-download/-/js-file-download-0.4.12.tgz",
+      "integrity": "sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg=="
+    },
     "js-message": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz",
@@ -9245,10 +9250,9 @@
       "dev": true
     },
     "qs": {
-      "version": "6.5.2",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
-      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
-      "dev": true
+      "version": "6.9.4",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz",
+      "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ=="
     },
     "query-string": {
       "version": "4.3.4",
diff --git a/package.json b/package.json
index 39cc8154eb5c792d590b0a13b7ac515edee63838..786ce3c9469b14d2cde94f0f0fa3ce0709413454 100644
--- a/package.json
+++ b/package.json
@@ -18,6 +18,7 @@
     "dayjs": "^1.9.1",
     "file-saver": "^2.0.2",
     "jquery": "^3.5.1",
+    "js-file-download": "^0.4.12",
     "kalendar-vue": "^2.1.1",
     "lodash.trim": "^4.5.1",
     "popper.js": "^1.16.1",
diff --git a/src/components/Courses.vue b/src/components/Courses.vue
index 8e92918ecf974c00f83a1f83c49aaa9570dc865c..9da2ecd76a9d456b32263528bc9d9320db8a59c4 100644
--- a/src/components/Courses.vue
+++ b/src/components/Courses.vue
@@ -3,6 +3,7 @@
     <div class="content col-md-12">
       <div id="search_box" class="search_box col-md-4">
         <div class="entry_box-inner">
+          {{checkedBoxes}}
           <a id="editbutton" class="button" href="./editcourse" style="visibility: hidden">Eintrag bearbeiten</a>
           <a id="addbutton" class="button" href="./createcourse">neuen Eintrag hinzufügen</a>
           <a id="deletebutton" class="button" @click="deleterows">ausgewählte Einträge löschen</a>
@@ -112,18 +113,17 @@ export default {
       var headercheckboxvalue = headercheckbox.checked;
 
       let checkboxes = document.getElementsByName('checkbox_tablerow');
-      for(var i=0, n=checkboxes.length;i<n;i++) {
+      this.checkedBoxes = [];
+      for(var i=0, n = checkboxes.length;i<n;i++) {
         if (headercheckboxvalue){
           this.checkedBoxes.push(this.rows[i].id);
-        } else {
-          this.checkedBoxes.pop(this.rows[i].id);
         }
         checkboxes[i].checked = headercheckboxvalue;
       }
     },
 
-    loadData(){
-      this.$store.dispatch('course/getAll').then(
+    async loadData(){
+      await this.$store.dispatch('course/getAll').then(
         (data) => {
           let x;
           for(x = 0; x < data.length; x++){
@@ -138,28 +138,7 @@ export default {
     },
 
     exportExcel(){
-      this.$store.dispatch('event/get').then(
-          (data) => {
-            data.forEach(row => {
-              console.log("loop")
-              let title = row.title;
-              let description = row.description;
-              let from = row.startTime;
-              let to = row.endTime;
-
-              let payload = {
-                from,
-                to,
-                data: {
-                  title,
-                  description
-                }
-              }
-              this.events.push(payload);
-            })
-            console.log(this.events);
-          }
-      )
+      this.$store.dispatch('course/exportExcel', this.checkedBoxes);
     },
 
     "sortTable": function sortTable(col) {
@@ -245,7 +224,9 @@ export default {
       return Object.keys(this.rows[0])
     },
     filteredRows() {
-      return this.rows.filter(row => {
+      return this.rows.filter(() => {
+        return true;
+        /*
         const angebotsnummer = row.coursenumber.toLowerCase();
         const angebot = row.courseoffer.toLowerCase();
         const kursname = row.coursename.toLowerCase();
@@ -265,7 +246,7 @@ export default {
         const searchTerm = this.filter.toLowerCase();
 
         return angebotsnummer.includes(searchTerm) || angebot.includes(searchTerm) || kursname.includes(searchTerm) || veranstaltungsart.includes(searchTerm) || kursdatum.includes(searchTerm) || thema.includes(searchTerm) || kursort.includes(searchTerm) || begleitendeLehrkraft.includes(searchTerm) || betreuendeStudenten.includes(searchTerm) || betreuendeStudenten.includes(searchTerm) || anzahlderAnwesenden.includes(searchTerm) || anzahlderAngemeldeten.includes(searchTerm) || kursleiter.includes(searchTerm) || notiz.includes(searchTerm) || anzahlung.includes(searchTerm) || honorar.includes(searchTerm) || status.includes(searchTerm);
-      });
+     */ });
     },
   }
 }
diff --git a/src/components/Teachers.vue b/src/components/Teachers.vue
index 4bf7fe62d485dedc95a4e61e3761d1c1254d379d..1c11526959e527c43c0961a00f85808a97e6e788 100644
--- a/src/components/Teachers.vue
+++ b/src/components/Teachers.vue
@@ -5,7 +5,7 @@
         <a id="editbutton" class="button" href="./editteacher" style="visibility: hidden">Eintrag bearbeiten</a>
         <a id="addbutton" class="button" href="./createteacher">neuen Eintrag hinzufügen</a>
         <a id="deletebutton" class="button" @click="deleterows">ausgewählte Einträge löschen</a>
-        <a id="exportbutton" class="button" href="./exporttableteacher">Tabelle exportieren</a>
+        <a id="exportbutton" class="button" @click="exportExcel">Tabelle exportieren</a>
       </div>
       <div class="search_box-inner">
         <i><img src="../assets/search.svg"></i>
@@ -34,7 +34,6 @@
         <th v-on:click="sortTable('school_branch')"><img id="imgsortschoolbranch" :src="require('../assets/'+sortImg)">Schulart</th>
         <th v-on:click="sortTable('school_name')"><img id='imgsortschoolname' :src="require('../assets/'+sortImg)">Schulname</th>
         <th v-on:click="sortTable('school_number')"><img id='imgsortschoolnumber' :src="require('../assets/'+sortImg)">Schulnummer</th>
-       <th v-on:click="sortTable('status')"><img id='imgsortstatus' :src="require('../assets/'+sortImg)">Status</th>
       </tr>
       <tr v-for="row in filteredRows" :key="row.id">
         <td scope="row">
@@ -89,11 +88,10 @@ export default {
       var headercheckboxvalue = headercheckbox.checked;
 
       let checkboxes = document.getElementsByName('checkbox_tablerow');
-      for(var i=0, n=checkboxes.length;i<n;i++) {
+      this.checkedBoxes = [];
+      for(var i=0, n = checkboxes.length;i<n;i++) {
         if (headercheckboxvalue){
           this.checkedBoxes.push(this.rows[i].id);
-        } else {
-          this.checkedBoxes.pop(this.rows[i].id);
         }
         checkboxes[i].checked = headercheckboxvalue;
       }
@@ -114,6 +112,11 @@ export default {
       );
     },
 
+    exportExcel(){
+      this.$store.dispatch('teacher/exportExcel', this.checkedBoxes);
+    },
+
+
     deleterows(){
       let x = 0;
       for (x; x < this.checkedBoxes.length; x++){
@@ -710,8 +713,7 @@ export default {
       return Object.keys(this.rows[0])
     },
     filteredRows() {
-      return this.rows.filter(row => {
-        console.log(row)
+      return this.rows.filter(() => {
         /*const personal_number = row.personal_number.toLowerCase();
         const gender = row.gender.toLowerCase();
         const grad = row.grad.toLowerCase();
diff --git a/src/services/course.service.js b/src/services/course.service.js
index f61e1ca945c58debd2c4a5a228048e873da56de9..bfdb5d2979eaa7edd576e3e3e69a1e7cf4f6b362 100644
--- a/src/services/course.service.js
+++ b/src/services/course.service.js
@@ -1,5 +1,6 @@
 import axios from 'axios';
 import authHeader from "@/services/auth-header";
+import fileDownload from 'js-file-download';
 
 const API_URL = 'http://localhost:9192/';
 
@@ -89,6 +90,30 @@ class CourseService {
                 return response.data;
             });
     }
+
+    exportExcel(ids) {
+        let idsArray = ""
+        if (ids.length > 0)
+            idsArray =  "/";
+
+        for (let i = 0; i < ids.length; i++) {
+            if (i === ids.length-1)
+                idsArray += ids[i];
+            else
+                idsArray += ids[i]+",";
+        }
+
+        return axios
+            .get(API_URL + 'exportCourseExcel' + idsArray, {
+                headers: authHeader(),
+                responseType: 'blob',
+            })
+            .then(response => {
+                fileDownload(response.data, "Kurse.xlsx");
+                return response.data;
+            });
+    }
+
 }
 
 
diff --git a/src/services/teacher.service.js b/src/services/teacher.service.js
index cfe6a9d2a5f052ccc5be50e276d32f6c7e6bce35..a234a677ccf341fce3f6299996b7eccfb6203787 100644
--- a/src/services/teacher.service.js
+++ b/src/services/teacher.service.js
@@ -1,5 +1,6 @@
 import axios from 'axios';
 import authHeader from "@/services/auth-header";
+import fileDownload from "js-file-download";
 
 const API_URL = 'http://localhost:9192/';
 
@@ -86,6 +87,30 @@ class TeacherService {
                 return response.data;
             });
     }
+
+
+    exportExcel(ids) {
+        let idsArray = ""
+        if (ids.length > 0)
+            idsArray =  "/";
+
+        for (let i = 0; i < ids.length; i++) {
+            if (i === ids.length-1)
+                idsArray += ids[i];
+            else
+                idsArray += ids[i]+",";
+        }
+
+        return axios
+            .get(API_URL + 'exportTeacherExcel' + idsArray, {
+                headers: authHeader(),
+                responseType: 'blob',
+            })
+            .then(response => {
+                fileDownload(response.data, "Lehrkräfte.xlsx");
+                return response.data;
+            });
+    }
 }
 
 
diff --git a/src/store/course.module.js b/src/store/course.module.js
index 42ab54f9765be9eb567c6be2f7a5e0869d8b0019..dfe98134713c05301cc5e6d21f86f99e4e190e97 100644
--- a/src/store/course.module.js
+++ b/src/store/course.module.js
@@ -71,6 +71,19 @@ export const course = {
                     return Promise.reject(error);
                 }
             );
+        },
+
+        exportExcel({ commit },ids) {
+            return CourseService.exportExcel(ids).then(
+                response => {
+                    commit('insertSuccess', response);
+                    return Promise.resolve(response);
+                },
+                error => {
+                    commit('insertFailure');
+                    return Promise.reject(error);
+                }
+            );
         }
     },
 
diff --git a/src/store/teacher.module.js b/src/store/teacher.module.js
index 65d5621669d186bf35a140cebd673403d34e0ec2..fea7f1d83780bcc4f7659b7f9ef77ea1a43b7d05 100644
--- a/src/store/teacher.module.js
+++ b/src/store/teacher.module.js
@@ -1,4 +1,5 @@
 import TeacherService from '../services/teacher.service';
+import CourseService from "@/services/course.service";
 
 const initialState = null;
 
@@ -71,6 +72,19 @@ export const teacher = {
                     return Promise.reject(error);
                 }
             );
+        },
+
+        exportExcel({ commit }, ids) {
+            return TeacherService.exportExcel(ids).then(
+                response => {
+                    commit('insertSuccess', response);
+                    return Promise.resolve(response);
+                },
+                error => {
+                    commit('insertFailure');
+                    return Promise.reject(error);
+                }
+            );
         }
     },