Question

J'utilise une simple application PHP basée sur le Web qui génère un tableau sous forme de feuille de calcul

header("Content-Disposition: attachment; filename=" . $filename . ".xls");
header("Content-Type: application/vnd.ms-excel");

//inserts tab delimited text

Mais je constate que la feuille de calcul téléchargée s'ouvre en tant que fichier en lecture seule et doit être enregistrée localement et (dans Excel sous Windows), le type a été remplacé par XLS (à partir de HTML). Existe-t-il un moyen de définir correctement l’attribut de type de fichier afin qu’une simple sauvegarde ne nécessite pas de correction du type de fichier?

Le fichier téléchargé est-il en lecture seule pour des raisons de sécurité ou n'est-ce pas normal?

De plus, je n’aime pas les bordures automatiques créées lors de l’ouverture de la feuille de calcul dans Excel ou OpenOffice (sous Linux). Je préférerais ne pas avoir de format de bordure. Existe-t-il un moyen dans le fichier de ne pas ajouter de formatage ou est-ce intégré à ces applications?

Était-ce utile?

La solution

Je ne sais pas de quelle version d'Excel vous parlez, je suppose donc que vous utilisez une version de 2007 ou une version plus récente.

Le problème de modification d’extension dépend probablement d’une fonctionnalité Office appelée " Durcissement des extensions " ;; pour autant que je sache, la seule solution est de générer un vrai fichier Excel (par exemple, en utilisant le PHPExcel . ensemble de classes) et non un fichier HTML.

Les fichiers téléchargés sont en lecture seule pour des raisons de sécurité, car ils sont ouverts dans le soi-disant " Vue protégée ":

  

Fichiers provenant d'Internet et d'autres emplacements potentiellement dangereux   peut contenir des virus, des vers ou d’autres types de programmes malveillants, qui peuvent endommager   ton ordinateur. Pour protéger votre ordinateur, les fichiers de ces fichiers   les emplacements potentiellement dangereux sont ouverts dans la vue protégée. En utilisant   Vue protégée, vous pouvez lire un fichier et en inspecter le contenu tout en   réduire les risques qui peuvent survenir.

Enfin, un mot sur les frontières et le formatage: avec l'ancienne version d'Excel 2000, vous pouvez formater la sortie en ajoutant simplement des balises XML dans la section d'en-tête du code HTML; voir le " Référence HTML et XML pour Microsoft Office " pour plus de détails et d’exemples, mais gardez à l’esprit que c’est assez obsolète, je ne pense donc pas que cette technique fonctionne toujours avec les versions Excel les plus récentes.

Si vous souhaitez mieux contrôler la sortie générée, vous ne devez pas utiliser de code HTML simple pour créer le fichier de feuille de calcul.

Sur cet article , vous pouvez également trouver des alternatives à PHPExcel pour l'écriture de fichiers Excel.

Autres conseils

D'après les informations dont je dispose, du moins sous Windows, cela dépend de ce que l'utilisateur fait avec l'invite affichée par le navigateur lorsqu'elle suit le lien.

Si l'utilisateur choisit de sauvegarder le fichier, il ne sera pas en lecture seule. Si l'utilisateur choisit de l'ouvrir, le fichier sera enregistré dans un répertoire temporaire et le navigateur pourra le supprimer à la fermeture. Je ne suis pas sûr du fonctionnement de ce mécanisme, mais je suppose qu’un verrou est en place à un endroit qui rend le fichier en lecture seule.

Si vous souhaitez enregistrer localement, vous pouvez définir l'attribut description du contenu :

header('Content-Description: File Transfer');   
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=" . $filename . ".xls");    

MODIFIER

Si vous imprimez le texte délimité par des tabulations et attribuez content-disposition comme xls ou csv, Une application Excel (ou un autre programme, tel que gnumeric ou openoffice) le reconnaît comme xls ou csv.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top