我使用下面的代码将一个简单的报表呈现给Excel或PDF,它在PDF中工作得很好,但是在Excel中,如果dtTable有超过64K的行,我会得到一个错误。我使用微软发布的ReportDefinition,允许从DataTable动态创建rdlc,可从此处获得http://www.gotreportviewer.com/
谁知道如何设置报表生成器,以便将电子表格拆分为每64K行的一个新选项卡?
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);发布于 2013-12-20 20:13:21
若要将每64K行放在单独的工作表中,请根据行号在报表中创建一个分页。
如果数据超过65k,如何在SSRS报表的Excel中导出数据
导出SSRS 2005中的EXCEL错误
发生此错误是因为报表查看器控件使用旧的BIFF Excel格式,该格式每个工作表只处理65536行。
https://stackoverflow.com/questions/20710740
复制相似问题