J'ai une page Web qui renvoie à une feuille de calcul Excel 2007. C'est un fichier .xls
et non pas .xlsx
. Lorsque je clique sur le lien, la boîte de dialogue habituelle s'ouvre pour ouvrir/enregistrer le fichier Excel. En cliquant sur «Ouvrir», je reçois le message d'avertissement suivant.
Le fichier que vous essayez d'ouvrir, 'filename.xls' se trouve dans un fichier .__ différent. format que celui spécifié par le fichier extension. Vérifiez que le fichier n'est pas corrompu et provient d'une source fiable avant d'ouvrir le fichier. Veux-tu ouvrir le fichier maintenant?
Puis-je savoir comment supprimer ce message d'avertissement par programmation (c'est-à-dire le masquer ou l'empêcher de s'afficher?) J'utilise ColdFusion pour le développement Web.
Ce problème résulte d'une fonctionnalité appelée Extension Hardening, et vous pouvez trouver plus d'informations à ce sujet here
J'ai souvent rencontré ce problème dans mes projets et, comme Jon l'a dit, la désactivation d'Extension Hardening doit être effectuée par chaque utilisateur côté client.
Malheureusement, le lien ci-dessus indique également qu'aucune modification de ce code n'est attendue avant au moins Office 14.
Si vous ne souhaitez pas rechercher une solution mais souhaitez simplement résoudre le problème, insérez cette clé dans votre base de registre pour supprimer la notification:
[HKEY_CURRENT_USER\Logiciel\Microsoft\Office\12.0\Excel\Sécurité] “ExtensionHardening” = dword: 00000000
Vous pouvez accomplir ce qui précède en procédant comme suit:
En supposant que vous créez votre objet de feuille de calcul avec cette syntaxe:
<cfset sheet = SpreadsheetNew() />
Vous utiliseriez ceci pour créer le téléchargement:
<cfheader name="content-disposition" value="attachment;filename=my_spreadsheet.xls">
<cfcontent type="application/vnd.ms-Excel" variable="#spreadsheetReadBinary(sheet)#" reset="true">
Créez votre objet feuille de calcul avec cette syntaxe:
<cfset sheet = SpreadsheetNew("", "true") />
Et utilisez ceci pour créer le téléchargement:
<cfheader name="content-disposition" value="attachment;filename=my_xml_spreadsheet.xlsx">
<cfcontent type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" variable="#spreadsheetReadBinary(sheet)#" reset="true">
Merci à Raymond Camden pour l’essentiel (son exemple portait sur la création d’un tableur dans un format plus ancien - j’ai mis à jour pour le format le plus récent et utilise des valeurs MIME légèrement différentes).
J'ai eu le même genre de problème et client se plaindre à ce sujet. J'ai fait beaucoup de recherches sur Google mais pas de chance. Enfin, j'ai créé une feuille de calcul à l'aide de cfspreadsheet. Je sais qu'elle nécessite un travail supplémentaire par rapport à la création directe via HTML, mais elle supprime les avertissements.
Je ne crois pas que vous puissiez le cacher à l'utilisateur. Ces avertissements sont externes à votre navigateur.
Le message suggère que le contenu du fichier et son extension ne correspondent pas. Donc, il s’agit d’un fichier XLSX ou le fichier en cours sur le serveur est cassé d’une manière ou d’une autre. Je suggère d'essayer d'ouvrir le fichier avec un outil Zip. Si cela fonctionne, c'est vraiment un fichier au format XLSX. Ensuite, vous pouvez corriger l'avertissement en renommant le fichier.
Si ce n'est pas le cas, quelque chose s'est passé dans le fichier.
Quoi qu'il en soit, supprimer l'avertissement n'est pas une solution à votre problème. La prochaine fois qu'un virus se présentera et demandera à vos clients d'ouvrir nakedgrls.gif.exe
, mieux vaut ne pas jouer avec les paramètres de sécurité.
Si vous ne spécifiez pas l'extension de fichier, il est probablement nommé comme fichier .cfm avec le type de contenu "application/vnd-Excel", ce qui provoque cet avertissement.
Essayez d'ajouter ceci avant le début de la sortie du fichier:
<cfheader name="Content-Disposition" value="attachment;filename=myexcelfile.xls">
<cfcontent type="application/ms-Excel" reset="true">
Si vous utilisez l'astuce cfcontent pour générer un fichier Excel, envisagez d'utiliser cfx_query2Excel, il écrira de vrais fichiers Excel qui devraient vous aider à résoudre ce problème. C'est une bibliothèque Java et ça valait le coup.
Bonne chance.