.net 创建到Excel for ReportViewer(rdlc)的自定义导出
我对在ReportViewer中为我的报告创建自定义导出到Excel选项感兴趣。这主要是因为我希望解除pdf,我通过以下方式做到了这一点:.net 创建到Excel for ReportViewer(rdlc)的自定义导出,.net,reportviewer,.net,Reportviewer,我对在ReportViewer中为我的报告创建自定义导出到Excel选项感兴趣。这主要是因为我希望解除pdf,我通过以下方式做到了这一点: ReportViewer1.ShowExportControls = false; 因为无法在ReportViewer中禁用任何特定的导出功能(例如pdf但不是excel)。下面是我(稍微)修改过的代码。理想情况下,我希望类似于前面的导出选项,在这里我可以将文件保存到我想要的任何位置 编辑:代码可以工作,但是我需要如何修改Filestream,以便不自动
ReportViewer1.ShowExportControls = false;
因为无法在ReportViewer中禁用任何特定的导出功能(例如pdf但不是excel)。下面是我(稍微)修改过的代码。理想情况下,我希望类似于前面的导出选项,在这里我可以将文件保存到我想要的任何位置
编辑:代码可以工作,但是我需要如何修改Filestream,以便不自动保存文件,而是提示用户可以保存到他们想要的任何位置
protected void btnExportExcel_Click(object sender, EventArgs e)
{
Warning[] warnings;
string[] streamids;
string mimeType;
string encoding;
string extension;
byte[] bytes = ReportViewer1.LocalReport.Render(
"Excel", null, out mimeType, out encoding,
out extension,
out streamids, out warnings);
FileStream fs = new FileStream(@"c:\output.xls",
FileMode.Create);
fs.Write(bytes, 0, bytes.Length);
fs.Close();
}
我是根据微软在ReportViewer上的文档和谷歌的一些搜索结果将这些信息放在一起的,以防有人遇到与我类似的问题:
protected void ExportExcel_Click(object sender, EventArgs e)
{
Warning[] warnings;
string[] streamids;
string mimeType;
string encoding;
string extension;
string filename;
byte[] bytes = ReportViewer1.LocalReport.Render(
"Excel", null, out mimeType, out encoding,
out extension,
out streamids, out warnings);
filename = string.Format("{0}.{1}", "ExportToExcel", "xls");
Response.ClearHeaders();
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
Response.ContentType = mimeType;
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
只是提醒一下。。。接受的答案将呈现为原始海报要求的XLS文件 但是,现在也可以导出到XLSX。您必须将方法的
格式
参数从的“Excel”
更改为的“EXCELOPENXML”
要获取可能值的完整列表,可以调用。当我在report viewer实例上运行它时,我得到了以下可能的选项:
“Excel”
“EXCELOPENXML”
“图像”
“PDF”
“WORD”
“WORDOPENXML”
我发现很难确定需要传递哪些格式。如果你问我的话,MSDN对这一点的描述非常糟糕。如果你想隐藏一个单独的导出选项(尽管听起来你似乎觉得自定义导出很有用),这里有两个选项: 选项A.使用CSS隐藏导出选项:
public void DisableUnwantedExportFormat(ReportViewer ReportViewerID, string strFormatName)
{
FieldInfo info;
foreach (RenderingExtension extension in ReportViewerID.ServerReport.ListRenderingExtensions())
{
if (extension.Name == strFormatName)
{
info = extension.GetType().GetField("m_isVisible", BindingFlags.Instance | BindingFlags.NonPublic);
info.SetValue(extension, false);
}
}
}
protected void ReportViewer1_PreRender(object sender, EventArgs e)
{
DisableUnwantedExportFormat((ReportViewer)sender,"Excel");
}
(来源:,和@valik的链接答案。)有一种方法可以在报表查看器中禁用特定导出。见下文
Step 1: Add OnPreRender event for the report viewer
Step 2: Inside the ReportViewer_PreRender function add the following code
DisableReportExportType.HideUnwantedExportFormat((ReportViewer)sender, "PDF"); // Disables PDF
DisableReportExportType.HideUnwantedExportFormat((ReportViewer)sender, "WORDOPENXML"); //Disables Word
DisableReportExportType.HideUnwantedExportFormat((ReportViewer)sender, "EXCELOPENXML"); //Disables Excel
根据需要使用上述方法。希望这就是你想要的。我寻找这个答案已经很久了。非常感谢你。
Step 1: Add OnPreRender event for the report viewer
Step 2: Inside the ReportViewer_PreRender function add the following code
DisableReportExportType.HideUnwantedExportFormat((ReportViewer)sender, "PDF"); // Disables PDF
DisableReportExportType.HideUnwantedExportFormat((ReportViewer)sender, "WORDOPENXML"); //Disables Word
DisableReportExportType.HideUnwantedExportFormat((ReportViewer)sender, "EXCELOPENXML"); //Disables Excel