2013-02-22 32 views
1

我有一個Web應用程序需要以PDF格式顯示多個報告。它是一個asp.net應用程序,我使用SSRS LocalReport對象以PDF形式呈現,然後寫入頁面。我必須使用本地模式(而不是遠程模式),因爲在發送到報告進行渲染之前,我對C#中的數據進行了大量處理。SSRS LocalReport模式需要很長時間才能在PDF中呈現

我發現這些報告需要很長時間才能呈現 - 有些需要幾分鐘。這是不可接受的,因爲之前的應用程序(我也是在2000年使用Crystal Reports V8編寫的)正在幾秒鐘內渲染這些報告。

我使用的是VS 2012和報表Viewer 2012,我驚訝於技術在12年中已經倒退了很多。

我注意到SSRS在頁面呈現方面存在很大的問題,我認爲這是因爲SSRS的結構是基於控件而不是基於頁面的Crystal Reports。所以Crystal在頁面大小,頁眉,頁腳和頁面編號方面不會太多。

任何人都有類似的問題和任何建議將非常感激。

回答

0

Reporting Services具有名爲「InteractiveSize」的Report級別屬性。這可以設置爲0,0,這基本上意味着整個報告在屏幕上呈現。將其設置爲適當的A4(21釐米,29.7釐米)或其他標準頁面尺寸,例如美國信(21.6釐米,27.9釐米)將導致報告渲染器按需渲染頁面,這與Crystal所做的相同。

+0

謝謝達沃斯, 不幸的是,我是在PDF中呈現,而不是通過報告查看器。使用PDF進行渲染實際上會強制報告頁面進行格式化,因此不會使用交互式度量,並且在使用PDF進行渲染時不會影響渲染速度。 – 2013-02-25 03:21:03

2

我已經做了大量的研究和實驗,並且能夠顯着提高報告速度。我想分享我實施的一些改進。

1.)請勿使用全局總頁數,因爲它會強制報告被處理兩次。

2.)避免在向字段分配數據時使用表達式。我發現這是造成延誤的主要原因。一些我所用的表達......

    = Format(myDate, "dd-MMM-yy") 
        = ": " + myfield.value 

我沒有在代碼中所有格式和格式化的數據輸送到報告中,並沒有讓報告做任何表情的處理。

3.)文檔圖應該只是一個字段,不要使用任何表達式。

4.)在可能的情況下將文本框的CanGrow屬性設置爲false。

5.)避免使用報告中的代碼部分。

我希望這可以幫助別人在未來。

相關問題