2012-10-05 50 views
3

如何報告服務返回報表數據(我的報表服務器中已經有一些完整的報表),我的ASP.Net Web應用程序可以使用asp接收,格式化和顯示。淨HTML和CSS?具有自定義Web UI和格式的SSRS報告

RS是否有可能將報告重新渲染爲json,xml等,我可以在代碼隱藏中使用它們來顯示它們?我想例如使頭標藍色和值深藍色,併爲我的reprort放置一個背景圖像,並在報告programmaticlly等一些值的圖標。

我不想使用reportviewer控件。我的報告不使用任何輸入參數。

+1

如果你不想要報告,那麼你不應該使用報告。只需使用數據庫查詢。 –

+0

@lc他們可能想要使用現有的報表查詢和/或在線報表設計器作爲易於使用的查詢生成器 – TFD

回答

3

有一種方法,我已經嘗試了一些。

首先,您需要默認以XML格式輸出報告。 http://msdn.microsoft.com/en-us/library/ms154040.aspx http://msdn.microsoft.com/en-us/library/ms152835.aspx

接下來,您需要使用XSLT http://msdn.microsoft.com/en-us/library/aa178953(v=sql.80).aspx

申請轉換成XML輸出,我認爲這是採取的報告和改造其風格看起來更加的HTML的唯一途徑

另一種溶劑 基於TFD建議我已經創建了一個簡單的控制檯應用程序,它讀取由報告服務生成的csv文件並打印結果。

我用LinqToExcel所以這將是更快地讀取數據,但你不必使用它

代碼:

System.Net.WebClient client = new WebClient(); 
     client.Credentials = new NetworkCredential("username", "password"); 
     client.DownloadFile("reporingservisesURL/ReportServer? 
     rs:Command=Render&rs:Format=CSV", "file.csv"); 
     FileInfo file = new FileInfo("file.csv"); 

     var excel = new ExcelQueryFactory(file.FullName); 
     var worksheetNames = excel.GetWorksheetNames(); 
     var results = from c in excel.Worksheet("UsersTry") 
         select c; 

     foreach (var item in results) 
     { 
      Console.WriteLine(String.Format("UserID: {0} , UserName:{1} , 
      LoginName: {2}",item[0].Value,item[1].Value,item[2].Value)); 
     } 

     Console.WriteLine("The End :)"); 
     Console.ReadLine(); 

我希望它幫你

+1

CSV也可用,這可能更容易,因爲數據很可能會被去標準化,因爲它是一個報告 – TFD

+0

我認爲你是對的,但你應該考慮到你的專欄名稱會在每個報告中發生變化 – Silagy

+0

我也發現了這個答案http://stackoverflow.com/q/1190734/605154 – Silagy