我找到答案。我把它放在另一個...
ReportViewer的第11版本可以導出報告爲.xls格式,但是,默認情況下,這種可能性是隱藏的。
一組支持的導出格式,您可以使用ReportViewer.LocalReport.ListRenderingExtensions()
實例方法查看。但是接收到的元素的所有屬性都是隻讀的(包括Visible
)。
要更改元素的可見性,您應該使用反射。例如:
/// <summary>
/// Set visibility of specified by name RenderingExtension to setted value
/// For example, name of Excel (.xls) extension is "Excel"
/// </summary>
/// <param name="reportViewer">Instance of ReportViewer control</param>
/// <param name="extensionName">Extension name (for example: "Excel")</param>
/// <param name="visible">Visibility</param>
private void SetVisibilityOnRenderingExtension(ReportViewer reportViewer, string extensionName, bool visible)
{
var renderingExtension = reportViewer.LocalReport.ListRenderingExtensions().FirstOrDefault(e => e.Name == extensionName);
if (renderingExtension != null)
{
FieldInfo info = renderingExtension.GetType().GetField("m_isVisible", BindingFlags.NonPublic | BindingFlags.Instance);
if (info != null)
{
info.SetValue(renderingExtension, visible);
}
}
}
我希望它可以幫助別人:)