diff --git a/apps/files/appinfo/update.php b/apps/files/appinfo/update.php
index de635e5ce6b93b3dfadd1cda033192ee8404629e..a993979414e09ceaedf57c5c432db9a4056a47a0 100644
--- a/apps/files/appinfo/update.php
+++ b/apps/files/appinfo/update.php
@@ -6,3 +6,60 @@ if (version_compare(\OCP\Config::getSystemValue('version', '0.0.0'), '7.0.0', '<
 	\OCP\Config::deleteSystemValue('allowZipDownload');
 	\OCP\Config::deleteSystemValue('maxZipInputSize');
 }
+
+if (version_compare(\OCP\Config::getAppValue('files', 'installed_version'), '1.1.8', '<')) {
+
+	// update wrong mimetypes
+	$wrongMimetypes = array(
+		'application/mspowerpoint' => 'application/vnd.ms-powerpoint',
+		'application/msexcel' => 'application/vnd.ms-excel',
+	);
+
+	$stmt = OC_DB::prepare('
+		UPDATE `*PREFIX*mimetypes`
+		SET    `mimetype` = ?
+		WHERE  `mimetype` = ?
+	');
+
+	foreach ($wrongMimetypes as $wrong => $correct) {
+		OC_DB::executeAudited($stmt, array($wrong, $correct));
+	}
+
+	$updatedMimetypes = array(
+		'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
+		'xlsx' => 'application/vnd.ms-excel',
+		'pptx' => 'application/vnd.ms-powerpoint',
+	);
+
+	// separate doc from docx etc
+	foreach ($updatedMimetypes as $extension => $mimetype ) {
+		$result = OC_DB::executeAudited('
+			SELECT count(`mimetype`)
+			FROM   `*PREFIX*mimetypes`
+			WHERE  `mimetype` = ?
+			', array($mimetype)
+		);
+
+		$exists = $result->fetchOne();
+
+		if ( ! $exists ) {
+			// insert mimetype
+			OC_DB::executeAudited('
+				INSERT INTO `*PREFIX*mimetypes` ( `mimetype` )
+				VALUES ( ? )
+				', array($mimetype)
+			);
+		}
+
+		// change mimetype for files with x extension
+		OC_DB::executeAudited('
+			UPDATE `*PREFIX*filecache`
+			SET `mimetype` = (
+				SELECT `id`
+				FROM `*PREFIX*mimetypes`
+				WHERE `mimetype` = ?
+			) WHERE `name` LIKE ?
+			', array($mimetype, '%.'.$extension)
+		);
+	}
+}
\ No newline at end of file
diff --git a/lib/private/mimetypes.list.php b/lib/private/mimetypes.list.php
index 3fe454f41f16c23f99fccbe1eea78b2cfd270a2f..ba1b9ca10b13d6d6523f8008b69a70d644846041 100644
--- a/lib/private/mimetypes.list.php
+++ b/lib/private/mimetypes.list.php
@@ -52,6 +52,7 @@ return array(
 	'c++' => array('text/x-c++src', null),
 	'deb' => array('application/x-deb', null),
 	'doc' => array('application/msword', null),
+	'docm' => array('application/vnd.ms-word.document.macroEnabled.12', null),
 	'docx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', null),
 	'dot' => array('application/msword', null),
 	'dotx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.template', null),
@@ -91,6 +92,7 @@ return array(
 	'mpg' => array('video/mpeg', null),
 	'msi' => array('application/x-msi', null),
 	'numbers' => array('application/x-iwork-numbers-sffnumbers', null),
+	'odf' => array('application/vnd.oasis.opendocument.formula', null),
 	'odg' => array('application/vnd.oasis.opendocument.graphics', null),
 	'odp' => array('application/vnd.oasis.opendocument.presentation', null),
 	'ods' => array('application/vnd.oasis.opendocument.spreadsheet', null),
@@ -104,7 +106,16 @@ return array(
 	'php' => array('application/x-php', null),
 	'pl' => array('application/x-perl', null),
 	'png' => array('image/png', null),
-	'ppt' => array('application/mspowerpoint', null),
+	'pot' => array('application/vnd.ms-powerpoint', null),
+	'potm' => array('application/vnd.ms-powerpoint.template.macroEnabled.12', null),
+	'potx' => array('application/vnd.openxmlformats-officedocument.presentationml.template', null),
+	'ppa' => array('application/vnd.ms-powerpoint', null),
+	'ppam' => array('application/vnd.ms-powerpoint.addin.macroEnabled.12', null),
+	'pps' => array('application/vnd.ms-powerpoint', null),
+	'ppsm' => array('application/vnd.ms-powerpoint.slideshow.macroEnabled.12', null),
+	'ppsx' => array('application/vnd.openxmlformats-officedocument.presentationml.slideshow', null),
+	'ppt' => array('application/vnd.ms-powerpoint', null),
+	'pptm' => array('application/vnd.ms-powerpoint.presentation.macroEnabled.12', null),
 	'pptx' => array('application/vnd.openxmlformats-officedocument.presentationml.presentation', null),
 	'psd' => array('application/x-photoshop', null),
 	'py' => array('text/x-python', null),
@@ -130,8 +141,15 @@ return array(
 	'woff' => array('application/font-woff', null),
 	'wmv' => array('video/x-ms-asf', null),
 	'xcf' => array('application/x-gimp', null),
-	'xls' => array('application/msexcel', null),
+	'xla' => array('application/vnd.ms-excel', null),
+	'xlam' => array('application/vnd.ms-excel.addin.macroEnabled.12', null),
+	'xls' => array('application/vnd.ms-excel', null),
+	'xlsb' => array('application/vnd.ms-excel.sheet.binary.macroEnabled.12', null),
+	'xlsm' => array('application/vnd.ms-excel.sheet.macroEnabled.12', null),
 	'xlsx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', null),
+	'xlt' => array('application/vnd.ms-excel', null),
+	'xltm' => array('application/vnd.ms-excel.template.macroEnabled.12', null),
+	'xltx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.template', null),
 	'xml' => array('application/xml', 'text/plain'),
 	'zip' => array('application/zip', null),
 );