2013-04-22 141 views
0

我想在单击按钮后将报告查看器导出到excel文件并隐藏可用于报告查看器的现有导出工具栏按钮。自定义导出reportviewer到excel文件

下面是我的导出文件功能代码:

private void ExportFile() 
    { 
    SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 
     saveFileDialog1.Filter = "*PDF files (*.pdf)|*.pdf|Excel files (*.xls)|*.xls|Doc files  (*.doc)|*.doc"; 
     // Variables 
     Warning[] warnings; 
     string[] streamids; 
     string mimeType; 
     string encoding; 
     string extension; 
     string path = " "; 
     DialogResult dr = saveFileDialog1.ShowDialog(); 
     path = saveFileDialog1.FileName; 

     byte[] bytes = reportViewerForm.reportViewer1.LocalReport.Render("Excel", null, out mimeType, out encoding, out extension, out streamids, out warnings); 

     FileStream fs = new FileStream(path + ".xls", FileMode.Create); 
     fs.Write(bytes, 0, bytes.Length); 
     fs.Close();} 

代码button_click事件:

private void btnExport_Click(object sender, EventArgs e) 
    { 
     this.GetData(); 
     this.ExportFile(); 
    } 

然而,试图出口它,当我得到一个异常错误。 这里是我的内部例外:

InnerException: Microsoft.ReportingServices.ReportProcessing.ReportProcessingException 
    Message=One or more parameters required to run the report have not been specified. 
    Source=Microsoft.ReportViewer.Common 
    ExceptionLevelHelpLink=http://go.microsoft.com/fwlink/?LinkId=20476&EvtSrc=Microsoft.ReportingServices.Diagnostics.Utilities.ErrorStrings&EvtID=rsParametersNotSpecified&ProdName=Microsoft%20SQL%20Server%20Reporting%20Services&ProdVer=1.0 
    SkipTopLevelMessage=false 
    StackTrace: 
     at Microsoft.ReportingServices.ReportProcessing.ReportProcessing.RenderReport(IRenderingExtension newRenderer, DateTime executionTimeStamp, ProcessingContext pc, RenderingContext rc, IChunkFactory cacheDataChunkFactory, IChunkFactory yukonCompiledDefinition, Boolean& dataCached) 
     at Microsoft.Reporting.LocalService.CreateSnapshotAndRender(CatalogItemContextBase itemContext, ReportProcessing repProc, IRenderingExtension renderer, ProcessingContext pc, RenderingContext rc, SubreportCallbackHandler subreportHandler, ParameterInfoCollection parameters, DatasourceCredentialsCollection credentials) 
     at Microsoft.Reporting.LocalService.Render(CatalogItemContextBase itemContext, Boolean allowInternalRenderers, ParameterInfoCollection reportParameters, IEnumerable dataSources, DatasourceCredentialsCollection credentials, CreateAndRegisterStream createStreamCallback, ReportRuntimeSetup runtimeSetup) 
     at Microsoft.Reporting.WinForms.LocalReport.InternalRender(String format, Boolean allowInternalRenderers, String deviceInfo, PageCountMode pageCountMode, CreateAndRegisterStream createStreamCallback, Warning[]& warnings) 
    InnerException: 

我错过了什么参数?任何帮助将不胜感激。谢谢。

回答

1

您试图导出的报告是否需要报告参数? (快速参数:how to add parameters in report viewer?

我问,因为这通常是我忘记传递我的报告参数时得到的异常。

+0

是的,我有一些头上的参数。我如何传递报告参数。 – Therenho 2013-04-23 01:51:27

+0

好的..我解决了这个问题。感谢您的解决方案! – Therenho 2013-04-23 03:15:57