Hochladen von file auf SQL server, kann es nicht ordnungsgemäß abrufen

Meine Frage ist die folgende: Ich versuche, eine Excel-file in die database mit dieser Methode upload:

using (SqlConnection connection = new SqlConnection(@"Data Source=TESZT1\SQLEXPRESS;Initial Catalog=Alepitmeny;Persist Security Info=True;User ID=sa;Password=*****")) using (SqlCommand command = connection.CreateCommand()) { byte[] file; using (var stream = new FileStream(ExcelFilePath, FileMode.Open, FileAccess.Read)) { using (var reader = new BinaryReader(stream)) { file = reader.ReadBytes((int)stream.Length); } } command.CommandText = "INSERT INTO Dokumentacio (Elrendelo_ExcelFile) VALUES (@File) SELECT SCOPE_IDENTITY()"; command.Parameters.Add("@File", SqlDbType.VarBinary, file.Length).Value = file; connection.Open(); this.dokumentacio_Class.Dokumentacio_ID = Convert.ToInt32(command.ExecuteScalar()); connection.Close(); } 

Aber wenn ich die hochgeladenen fileen mit der unten stehenden Methode herunterlade, bekomme ich eine Fehlermeldung

Excel fand unlesbaren Inhalt in filename.xls. Möchten Sie den Inhalt dieser Arbeitsmappe wiederherstellen?

von Microsoft Excel, und es kann nicht wiederherstellen.

(Ich verwende SQL server 2012, Visual Studio 2013, das Projekt ist WPF-Projekt, meine Office-Version ist 2013)

In der database ist Elrendelo_ExcelFile Spalte VARBINARY(MAX)

  public bool ElrendeloExcelFileLetolt(string SavePath) { using (SqlConnection connection = new SqlConnection(@"Data Source=TESZT1\SQLEXPRESS;Initial Catalog=Alepitmeny;Persist Security Info=True;User ID=sa;Password=*****")) try { using (SqlCommand command = connection.CreateCommand()) { command.CommandText = @"SELECT d.Elrendelo_ExcelFile FROM Dokumentacio d INNER JOIN Kapcsolotabla k ON k.Dokumentacio_ID=d.Dokumentacio_ID WHERE k.Elrendelo_ID=@id"; command.Parameters.AddWithValue("@id", this.dokumentacio_ID); FileStream stream; BinaryWriter writer; int bufferSize = 100; byte[] buffer = new byte[bufferSize]; long retval; long startIndex = 0; connection.Open(); SqlDataReader reader = command.ExecuteReader(CommandBehavior.Default); while (reader.Read()) { stream = new FileStream(SavePath, FileMode.OpenOrCreate, FileAccess.Write); writer = new BinaryWriter(stream); startIndex = 0; retval = reader.GetBytes(0, startIndex, buffer, 0, bufferSize); while (retval == bufferSize) { writer.Write(buffer); writer.Flush(); startIndex += bufferSize; retval = reader.GetBytes(0, startIndex, buffer, 0, bufferSize); } writer.Write(buffer, 0, (int)retval - 1); writer.Flush(); writer.Close(); stream.Close(); } reader.Close(); connection.Close(); } return true; } catch (System.Data.SqlClient.SqlException) { return false; } finally { connection.Close(); } } 

Diese SO-Antwort soll Ihnen helfen -> Wie kann ich Excel-fileen in Varbinary (max) -Spalte in SQL server 2008 insert / abrufen?