2014-12-04 100 views
0

我在我的C#VS2012應用程序中有一個報告rdlc文件。報告通常在應用程序中顯示,並且可以正常工作將其導出到MS Word或PDF。但是,Excel導出失敗並顯示以下錯誤:「本地報告處理期間發生錯誤。長度不能小於零。參數名稱:長度'MS ReportViewer WinForms Excel導出錯誤

我沒有任何名爲length的自定義參數。

這是生成報告的代碼。我添加了一些自定義參數來添加頁腳信息。任何想法可能導致這個問題?或者如何去解決它呢?

private void frmReportViewer_Load(object sender, EventArgs e) 
    { 
     this.DataTable1BindingSource.DataSource = ReportData(); 

     RunStat thisRun = SurveyTools.RunStatistics(runID); 
     string avgSpeed = thisRun.AverageSpeed.ToString("N2"); 

     List<ReportParameter> myParams = new List<ReportParameter>(); 

     myParams.Add(new ReportParameter("PLDistance", thisRun.RunDistance.ToString("N0"))); 
     myParams.Add(new ReportParameter("RunHours", thisRun.RunHours.ToString("N2"))); 
     myParams.Add(new ReportParameter("AvgSpeed", avgSpeed)); 
     rptView.LocalReport.SetParameters(myParams); 
     rptView.SetDisplayMode(DisplayMode.PrintLayout); 

     this.rptView.RefreshReport(); 
    } 

    private DataTable ReportData()... 

回答

0

這可能是類似於this question這給了同樣的錯誤,除了它是失敗的HTML渲染,但每隔渲染工作參數調用索引。

在這種情況下發生的事情是,我將SSRS 2005報告升級到SSRS 2008,並且在轉換中出現了錯位。 SSRS現在認爲你有一個文本框或負長度的東西。當它談到一個叫做length的參數時,它並不是指你的一個報告參數,而是一個參數,它是內部用於設置報告對象大小的XML的一部分。您的報告可能看起來不錯,但代碼中出現了問題。

這是一個重新定位和重新調整報表對象的過程,直到找到導致錯誤的報表對象。

0

我最終創建了兩個報告。一個用於出口到PDF與所有漂亮的頁眉和頁腳測試。另一個顯式導出到Excel。我從Excel版本中刪除了所有頁腳文本框。它工作正常。