Excel “trouvé du contenu illisible” erreur à l'ouverture d'un xlsx créé à partir de C#

Je suis de la création d'un fichier Excel (xlsx) à partir de C# à l'aide d'OpenXML.

Quand je crée un fichier xlsx et je l'ai ouvert, il n'a pas d'erreur.

Quand je tente de joindre ce fichier à un e-mail et l'envoyer, Excel renvoie le message "trouvé le contenu illisible" d'ouvrir le fichier joint, avec Oui/Pas de bouton pour continuer.

Cliquant sur Oui, le fichier est ouvert correctement.

C'est mon code pour joindre un fichier xlsx:

byte[] bt = functionToCreateXlsxfile();

MailMessage message = new MailMessage();

System.Net.Mail.Attachment attach = new System.Net.Mail.Attachment(
        new MemoryStream(bt),
        "myfile.xlsx", 
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

attach.ContentDisposition.CreationDate = DateTime.Now;
attach.ContentDisposition.ModificationDate = DateTime.Now;
attach.ContentDisposition.Inline = false;
attach.ContentDisposition.Size = bt.Length;

message.Attachments.Add(attach);
  • Ouvrez le bt[] -> disque et bt[] -> fixation -> disque fichiers dans un éditeur hexadécimal et de voir ce différent?
  • Le message signifie simplement excel ne reconnaît pas le format, lorsque vous cliquez sur "Oui", il remplace l'avertissement et tente de formater le contenu de la "Excel manière". Vous pouvez prendre un coup d'oeil à la mise en forme de openxmlformats de nouveau et s'assurer que le contenu correspond à la spécification. exactement.
  • la question est de savoir pourquoi j'ai cette erreur uniquement lorsque je joindre un fichier à un e-mail, mais pas quand je créer et ouvrir "directement".
  • Je ne peux que deviner la réponse car je ne sais pas Excel internes et la plupart d'entre nous ne le font pas... Voici mes pensées, l'une de ces options ne sont pas de doublure. nouveau MemoryStream(bt), "myfile.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.feuille"); Juste parce qu'un flux de mémoire est dit être d'un certain format, il n'en est pas de cette façon. Un autre point à souligner, les versions d'Excel sont radicalement différents, ce qui rend notre tâche plus difficile à comprendre tout ça. Ils ont changé les formats au fil des ans
  • n'est ce vrai si vous envoyez l'e-mail, enregistrez la pièce jointe sans l'ouvrir via votre client de messagerie, puis l'ouvrir?
  • Vous avez besoin d'une comparaison binaire, vous pouvez trouver l'écriture sur le disque est l'ajout d'une NOMENCLATURE par exemple
  • Nous (moi et mes collague) a fait tous les tests possibles, et la conclusion est qu'il ya quelque chose de mal lorsque le fichier est joint à l'adresse e-mail. Peut-être un manque d'en-tête, ou quelque chose d'autre, je ne sais pas exactement.

InformationsquelleAutor s.milziadi | 2014-12-02