J'utilise un BinaryReader pour lire un fichier Excel 2007 à partir d'une boîte aux lettres Exchange à l'aide d'un OWA, le fichier est ensuite écrit sur le disque à l'aide d'un BinaryWriter. Mon problème est que les deux fichiers ne correspondent pas lorsque l'écrivain se termine. Pire encore Excel 2007 n'ouvrira pas le fichier writen.Excel 2007 L'auteur de fichier dans C# résultats dans un fichier corrompu
Auparavant, Excel 2003 n'avait aucun problème avec la solution ci-dessous. Et Excel 2007 n'a pas de problème si le fichier est un fichier au format Excel 2003, uniquement si le format de fichier est Excel 2007 (* .xlsx).
BinaryReader:
using(System.IO.Stream stream = resource.GetInputStream(attachedFiles[k].Address))
{
using(System.IO.BinaryReader br = new System.IO.BinaryReader(stream))
{
attachment.Data = new byte[attachedFiles[k].Size];
int bufPosn=0, len=0;
while ((len = br.Read(attachment.Data, bufPosn, attachment.Data.Length-bufPosn)) > 0)
{
bufPosn += len;
}
br.Close();
}
}
BinaryWriter:
FileStream fs = new FileStream(fileName, FileMode.Create);
BinaryWriter binWriter = new BinaryWriter(fs);
binWriter.Write(content, 0, content.Length);
binWriter.Close();
fs.Close();
Suggestions gratfully reçues.
Qu'est-ce que la variable 'content'? Le format de xlsx est différent, donc la façon dont vous créez 'content' est significative. – AaronLS
Juste deviner, peut-être votre .xlsx est Unicode, et vous devez construire votre BinaryWriter avec le constructeur BinaryWriter (Stream, Encoding). –
xlsx est essentiellement un fichier XML compressé. – Asher