我正在使用BinaryReader從Exchange郵箱中使用OWA讀取Excel 2007文件,然後使用BinaryWriter將該文件寫入磁盤。我的問題是作者完成時兩個文件不匹配。更糟糕的是,Excel 2007不會打開該寫入文件。C#中的Excel 2007文件寫入器導致損壞的文件
以前,Excel 2003對於下面的解決方案沒有任何問題。如果文件是Excel 2003格式文件,並且文件格式爲Excel 2007(* .xlsx),則Excel 2007不存在問題。
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();
建議gratfully接收。
什麼是內容變量? xlsx的格式不同,所以你如何創建'content'是很重要的。 – AaronLS 2010-04-06 21:22:30
只是猜測,也許你的.xlsx是Unicode,你需要用BinaryWriter(Stream,Encoding)構造函數構造你的BinaryWriter。 – 2010-04-06 21:38:10
xlsx本質上是一個壓縮的xml文件。 – Asher 2010-04-07 06:10:16