如何在 asp.net 中将 RDLC 报告导出为 .xlsx 格式?

Ami*_*din 1 c# asp.net excel rdlc

在rdlc报告中,我想将rdlc报告导出为ex​​cel格式2007,即.xlsx格式。我编写了以下代码来获得这样的输出。但系统产生.xls 格式。请在这一点上帮助我。

private void PopulateReport(List<OrderDetail> objectList, string datasetName, string reportPath, out string mimeType, out byte[] renderedBytes, decimal fileWidth, decimal fileHeight)
        {
                LocalReport localReport = new LocalReport();
            localReport.ReportPath = Server.MapPath(reportPath);
                ReportDataSource reportDataSource = new ReportDataSource(datasetName, objectList);
            localReport.DataSources.Add(reportDataSource);

            //localReport.SetParameters(new ReportParameter("pm", "", false));    
            string reportType = "excel";
            mimeType = string.Empty;
            string encoding = string.Empty;
            string fileNameExtension = string.Empty;
            //The DeviceInfo settings should be changed based on the reportType
            string deviceInfo =

            "<DeviceInfo>" +

            "  <OutputFormat>PDF</OutputFormat>" +

            "  <PageWidth>" + fileWidth + "in</PageWidth>" +

            "  <PageHeight>" + fileHeight + "in</PageHeight>" +

            "  <MarginTop>0.5in</MarginTop>" +

            "  <MarginLeft>1in</MarginLeft>" +

            "  <MarginRight>1in</MarginRight>" +

            "  <MarginBottom>0.5in</MarginBottom>" +
            "</DeviceInfo>";
            Warning[] warnings;
            string[] streams;
            //Render the report
            renderedBytes = localReport.Render(reportType, deviceInfo, out mimeType, out encoding, out fileNameExtension, out streams, out warnings);
            //Clear the response stream and write the bytes to the outputstream
            //Set content-disposition to "attachment" so that user is prompted to take an action
            //on the file (open or save)
            Response.Clear();
            Response.ContentType = mimeType;
            Response.AddHeader("content-disposition", "attachment; filename=foo." + fileNameExtension);
            Response.BinaryWrite(renderedBytes);
            Response.End();
        }
Run Code Online (Sandbox Code Playgroud)

sam*_*113 8

我知道它已经有一段时间了,但这是答案。更新您的以下代码行

string reportType = "excel";
Run Code Online (Sandbox Code Playgroud)

string reportType = "EXCELOPENXML";
Run Code Online (Sandbox Code Playgroud)

这可能会帮助其他人。