I'm using below code to render a simple report to Excel or PDF, it works fine in PDF, however in Excel I get an error if dtTable has more than 64K rows. I'm using ReportDefinition which Microsoft has published to allow dynamically creation of rdlc from DataTable, available from here http://www.gotreportviewer.com/
Anybody know how to setup the Report Generator to split the spreadsheet out into a new tab every 64K row?
var localReport = new LocalReport();
var availableFields = new List<string>();
for (var i = 0; i < dtTable.Columns.Count; i++)
{
if (dtTable.Columns[i].ColumnName != "RowID")
availableFields.Add(dtTable.Columns[i].ColumnName);
}
MemoryStream m_rdl = new MemoryStream();
RdlGenerator gen = new RdlGenerator();
gen.AllFields = availableFields;
gen.SelectedFields = availableFields;
gen.WriteXml(m_rdl);
m_rdl.Position = 0;
localReport.LoadReportDefinition(m_rdl);
ReportDataSource reportDataSource = new ReportDataSource("MyData", dtTable);
localReport.DataSources.Add(reportDataSource);
string reportType = "Excel";
string encoding;
string fileNameExtension;
string mimeType;
string deviceInfo = "<DeviceInfo><OutputFormat>Excel</OutputFormat></DeviceInfo>"; Warning[] warnings; string[] streams; byte[] renderedBytes;
renderedBytes = localReport.Render(reportType, deviceInfo, out mimeType, out encoding, out fileNameExtension, out streams, out warnings);