1

我正在使用 BinaryReader 使用 OWA 从 Exchange 邮箱读取 Excel 2007 文件,然后使用 BinaryWriter 将文件写入磁盘。我的问题是当作者完成时这两个文件不匹配。更糟糕的是 Excel 2007 不会打开 writen 文件。

以前 Excel 2003 对下面的解决方案没有任何问题。如果文件是 Excel 2003 格式的文件,则 Excel 2007 没有问题,只要文件格式是 Excel 2007 (*.xlsx)。

二进制阅读器:

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();
    }
}

二进制写入器:

FileStream fs = new FileStream(fileName, FileMode.Create);
BinaryWriter binWriter = new BinaryWriter(fs);
binWriter.Write( content, 0, content.Length );
binWriter.Close();
fs.Close();

建议欣然接受。

4

2 回答 2

2

此问题是由于 attachFiles[k].Size 返回的值远小于实际文件大小造成的。Excel 2003 文件似乎不受此影响,但 Excel 2007 文件由于其压缩性质而易受攻击(解压缩例程显然对文件有不同的看法)。

一旦我更正了缓冲区的大小,文件就很好了。

感谢您的建议

于 2010-04-07T13:20:18.587 回答
0

IE8 和 OWA 存在问题,但我不确定它是否适用于您的情况。

结帐此站点也有此站点的链接。他们基本上解释了如何解决使用 OWA 下载 xmlx 和 docx 文件的问题。

于 2010-04-06T22:00:39.700 回答