Сохраните массив байтов в файл ExcelC#

Место общения программистов C#
Ответить
Anonymous
 Сохраните массив байтов в файл Excel

Сообщение Anonymous »

Я получаю массив байтов из отчета ssrs. Затем я хочу сохранить его в Excel на сервере для дальнейшей обработки.
Я могу экспортировать его в клиентский браузер, но при попытке сохранить файл на сервере он сохраняется. Но при открытии выдает ошибку: «Excel не может открыть файл, поскольку формат файла или расширение файла недействительны».
код следующий
Microsoft.Reporting.WebForms.ReportViewer rview = new Microsoft.Reporting.WebForms.ReportViewer();
//Web Address of your report server (ex: http://rserver/reportserver)

rview.ServerReport.ReportServerUrl = new Uri("http://rserver/reportserver");

rview.ServerReport.ReportPath = "/Report Project2/Comment";

string mimeType, encoding, extension, deviceInfo;
string[] streamids;
Microsoft.Reporting.WebForms.Warning[] warnings;
string format = "Excel"; //Desired format goes here (PDF, Excel, or Image)

deviceInfo = "" + "True" + "";
byte[] bytes = rview.ServerReport.Render(format, deviceInfo, out mimeType, out encoding, out extension, out streamids, out warnings);

try
{
System.IO.FileStream _FileStream = new System.IO.FileStream(Server.MapPath("output.xlsx"), System.IO.FileMode.Create, System.IO.FileAccess.Write);
_FileStream.Write(bytes, 0, bytes.Length);
//_FileStream.Close();
}
catch (Exception _Exception)
{
Console.WriteLine("Exception caught in process: {0}", _Exception.ToString());
}

Он не знает, как использовать формат информации, информацию об устройстве и т. д., которые я использую с объектом Respose для сохранения Excel в клиентском браузере.
здесь вот как я пишу объекту Response. Он отлично работает с объектом ответа.
Response.Clear();

if (format == "PDF")
{
Response.ContentType = "application/pdf";
Response.AddHeader("Content-disposition", "filename=output.pdf");
}
else if (format == "Excel")
{
Response.ContentType = "application/excel";
Response.AddHeader("Content-disposition", "filename=output.xls");
}
Response.OutputStream.Write(bytes, 0, bytes.Length);
Response.OutputStream.Flush();
Response.OutputStream.Close();
Response.Flush();
Response.Close();


Подробнее здесь: https://stackoverflow.com/questions/193 ... excel-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»