导出rdl报告到多张excel文件有问题从c#

我一直在网上寻找解决scheme,但迄今没有运气。

在我正在开发的当前应用程序中,我需要将可能较大的rdlc报告导出为ex​​cel文件(以及其他格式)

这是我用来实现这一目标的代码,并且在正常大小的报告中工作得非常好:

private static void ExportToExcel(LocalReport localReport, string filename) { if (File.Exists(filename)) { File.Delete(filename); } var bytes = localReport.Render("Excel", string.Empty); using (var stream = File.Create(filename)) { stream.Write(bytes, 0, bytes.Length); } } 

非常简单,但是当我尝试导出大型报告时,我得到一个类似于以下的exception:“Excel Rendering Extension:行数超过了此版本的工作表中的最大可能值。请求行数:152190。最大行数:65536。

所以这里是我的问题:是否有办法告诉出口商创build一个新的工作表时,达到最大的行数? 如果是这样的话呢?

我遇到了类似的问题,并认为我会在这里增加我的经验。 由于SSRS的版本没有提到,问题仍然没有得到答复,我认为这是一个很好的地方。 我写了一个PowerShell脚本来导出SSRS 2012 rdl报告到各种格式,其中一个是Excel。 我也收到以下错误:

使用“7”参数调用“Render”的exception:“Excel Rendering Extension:行数超过了此版本的工作表中的最大可能值。所请求行数:65587.最大行数:65536.(rrRenderingError)”

SSRS 2012确实删除了Excel导出中的65536行限制,但我很难find如何以编程方式超过此行限制。 经过一番search之后,我碰到了一个微软支持文章 ,帮助我解决了这个问题。 参数值“Excel”需要更改为“EXCELOPENXML”

 var bytes = localReport.Render("EXCELOPENXML", string.Empty); 

再次,这对SSRS的早期版本没有帮助,但是我想为SSRS 2012提供更多的可视性。

不知道您使用的是什么版本的Excel,但65,536行是.xls文件的限制。 如果你创build一个.xlsx文件,你将有最大1,048,576行(​​从这里 ),这应该满足你的要求。

编辑:虽然我最近自己使用了本机Excel对象,但显然EPPlus将允许您更容易地创buildXLSX文件。

HTH,Z

按照要求:

 xl.Application myExcelApp; xl.Workbooks myExcelWorkbooks; xl.Workbook myExcelWorkbook; xl.Worksheet myExcelWorksheet; myExcelApp = new xl.Application(); myExcelApp.DisplayAlerts = false; myExcelApp.Visible = false; myExcelWorkbooks = myExcelApp.Workbooks; String fileName = @"G:/foo/bar/goleafsgo.xlsx"; // set this to the file you want myExcelWorkbook = myExcelWorkbooks.Add(misValue); myExcelWorksheet = (xl.Worksheet)myExcelWorkbook.Worksheets.get_Item(1); Recordset rs = ConvertToRecordset(dt); ws.get_Range("A3", System.Reflection.Missing.Value).CopyFromRecordset(rs); myExcelWorkbook.SaveAs(fileName, xl.XlFileFormat.xlWorkbookDefault, misValue, misValue, false, false, xl.XlSaveAsAccessMode.xlNoChange, misValue, misValue, misValue, misValue, misValue); myExcelApp.Quit(); 

ConvertToRecordset函数可以在这里find

我知道这是一个老问题,但是你可以在你的.rdl文件中添加分页符。 这些导致导出在Excel中启动新工作表。 您可以使用.rdl中的公式来确定何时需要另外的分页符dynamic。