Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字节数组保存到excel文件_C#_Asp.net_Io - Fatal编程技术网

C# 将字节数组保存到excel文件

C# 将字节数组保存到excel文件,c#,asp.net,io,C#,Asp.net,Io,我从ssrs报告中得到一个字节数组。然后我想把它保存在服务器上的Excel中,以便进一步处理。 我可以在客户端浏览器上导出它,但当尝试在服务器上保存文件时,它会保存。但在打开excel时出现错误,无法打开文件,因为文件格式或文件扩展名无效 代码如下 Microsoft.Reporting.WebForms.ReportViewer rview = new Microsoft.Reporting.WebForms.ReportViewer(); //Web Address of your repo

我从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 = "<DeviceInfo>" + "<SimplePageHeaders>True</SimplePageHeaders>" + "</DeviceInfo>";
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());
}

请将分机改为xls。xlsx扩展名用于EXCEL OpenXML格式,xls扩展名用于EXCEL格式

字节数组是EXCEL文件吗?您的代码与此示例非常相似—它是ssrs报告。但我可以通过将其写入excel将其转换为excel。请参阅更新的代码。如果要将字节[]写入文件,请使用file.writealBytes。显然,这不是唯一的方法,而且简单可靠。@Jodrell在msdn链接中将其转换为.xls格式。可以转换成.xlsx格式吗?您使用的是什么版本的SSR?如果您有2012+版本,那么您将遇到与Excel 2003的兼容性问题。否则,2007+版本的Excel应与旧版Excel文件兼容。
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();