2015年12月27日 星期日

Cliend-Side Report 匯出 Excel, PDF

引用

<input type="button" onclick="$find('ReportViewer1').exportReport('PDF');" value="匯出PDF" />

/*ReportViewer1為控制項id*/
/*如果因為套用MasterPage導致ReportViewer1名稱亂掉的話,請嘗試<%= ReportViewer1.ClientID %>來取得該控制項id*/

而在ReportViewer的元件中,有一個屬性叫做【ShowToolBar】,你可以設定為false,則在呈現的時候ToolBar則會整個隱藏,如下圖
ShowToolBar=True的情形
ShowToolBar=False的情形
不過如果你捨不得將整個ToolBar都隱藏的話,在ReoprtViewer的屬性中有一個部份是針對ToolBar來做細微設定,如下圖
如果只想要隱藏匯出功能的話,可以把設定ShowExportControls=False 即可,設定完之後記得把剛剛的ShowToolBar=False -> ShowToolBar=True,則出現結果如下圖
當把匯出的選項從Toolbar關掉之後,如果需要自己撰寫匯出的功能其實也很簡單,有興趣可以參考LocalReport.Render 方法,我們在該aspx頁面中加入一個Button來產生excel,然後針對其撰寫Click事件之程式碼如下
01.Warning[] warnings;
02.string[] streamids;
03.string mimeType;
04.string encoding;
05.string extension;
06. 
07.byte[] bytes = ReportViewer1.LocalReport.Render(
08."Excel"nullout mimeType, out encoding, out extension,
09.out streamids, out warnings);
10. 
11.Response.Clear();
12.Response.AddHeader("Content-Disposition""attachment; filename=sample.xls");
13.Response.AddHeader("Content-Length", bytes.Length.ToString());
14.Response.ContentType = "application/octet-stream";
15.Response.OutputStream.Write(bytes, 0, bytes.Length); 

另一個產生Pdf的按鈕事件之程式碼如下
01.Warning[] warnings;
02.string[] streamids;
03.string mimeType;
04.string encoding;
05.string extension;
06. 
07.byte[] bytes = ReportViewer1.LocalReport.Render(
08."Pdf"nullout mimeType, out encoding, out extension,
09.out streamids, out warnings);
10. 
11.Response.Clear();
12.Response.AddHeader("Content-Disposition""attachment; filename=sample.pdf");
13.Response.AddHeader("Content-Length", bytes.Length.ToString());
14.Response.ContentType = "application/octet-stream";
15.Response.OutputStream.Write(bytes, 0, bytes.Length);

再次瀏覽該頁面,如下
分別點選【Export Excel】及【Export Pdf】按鈕,則頁面會各自出現另存新檔畫面,我們將檔案儲存下來之後,觀看excel及pdf之結果如下
Excel
PDF

沒有留言:

張貼留言