Я использую BinaryReader для чтения файла Excel 2007 из почтового ящика Exchange с помощью OWA, затем файл записывается на диск с помощью BinaryWriter. Моя проблема в том, что два файла не совпадают, когда писатель заканчивает работу. Хуже того, Excel 2007 не откроет записанный файл.
Ранее в Excel 2003 не было проблем с приведенным ниже решением. И Excel 2007 не имеет проблемы, если файл является файлом формата Excel 2003, только если формат файла - 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();
Предложения с благодарностью приняты.