MS Excel a les types MIME observés suivants:
application/vnd.ms-Excel
(officiel)application/msexcel
application/x-msexcel
application/x-ms-Excel
application/x-Excel
application/x-dos_ms_Excel
application/xls
application/x-xls
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
(xlsx)Y at-il un type qui fonctionnerait pour toutes les versions? Sinon, devons-nous définir response.setContentType()
avec chacun de ces types de mime individuellement?
De plus, nous utilisons le streaming de fichiers dans notre application pour afficher le document (pas seulement Excel - tout type de document). Ce faisant, comment pouvons-nous conserver le nom de fichier si l'utilisateur choisit de sauvegarder le fichier - actuellement, le nom du servlet qui rend le fichier apparaît en tant que nom par défaut.
Je crois que le type type MIME pour Excel fichiers est application/vnd.ms-Excel
.
En ce qui concerne le nom du document, vous devez définir l'en-tête suivant dans la réponse:
header('Content-Disposition: attachment; filename="name_of_Excel_file.xls"');
Je vois réveiller un vieux fil, mais j’ai eu envie d’ajouter le "nouveau" format .xlsx.
Selon http://filext.com/file-extension/XLSX , l'extension pour .xlsx est application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
. Ce pourrait être une bonne idée de l'inclure lors de la recherche de types de mime!
Vous devez toujours utiliser le type MIME ci-dessous si vous souhaitez servir un fichier Excel au format xlsx
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Je mettais le type MIME à partir du code .NET comme ci-dessous -
File(generatedFileName, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
Mon application génère Excel à l'aide du SDK OpenXML. Ce type MIME a fonctionné -
vnd.openxmlformats-officedocument.spreadsheetml.sheet
Pour . Xls utilisez le type de contenu suivant
application/vnd.ms-Excel
Pour Excel 2007 version et ultérieure . Xlsx format de fichier
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
J'utilise EPPlus pour générer un fichier Excel .xlsx (au format OpenXML). Pour envoyer ce fichier Excel en tant que pièce jointe dans un courrier électronique, j'utilise le type MIME suivant. Il fonctionne correctement avec le fichier généré par EPPlus et s'ouvre correctement dans l'aperçu du client de messagerie ms-Outlook.
string mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
System.Net.Mime.ContentType contentType = null;
if (mimeType?.Length > 0)
{
contentType = new System.Net.Mime.ContentType(mimeType);
}
Pour tous ceux qui tombent encore dans cette situation après avoir utilisé tous les types MIME possibles énumérés dans la question:
J'ai constaté que les iMac ont également tendance à utiliser un type "text/xls" de type MIME pour les fichiers Excel XLS. J'espère que cela vous aidera.