實現動態展現報表 種開發思路

2022-02-14 12:03:01 字數 920 閱讀 9259

實現動態展現報表大致有2種開發思路,一是,先使用xmltexwriter

類生成報表檔案(

.rdl

),然後在部署到伺服器上,再通過控制項展現。二是,通過

xmlserializer

類直接從伺服器上反串行話讀取報表,修改後以程式設計方式更新報表定義,再序列話到伺服器上儲存報表,最後通過控制項展現。前者的難點在於如何將生成的報表通過程式設計方式部署到伺服器上,且跟後者相比,前者每此修改都要全部生成一遍報表檔案,而後者只需修改需要變動的專案,很明顯後者的效率比前者高。而後者的難點在於如何從定義報表檔案的**中找出需要更改的專案並更改它。

如果對報表進行詳細設計,如新增資料來源,引數,資料集,表,,儀表,,文字框,以及各物件的大小位置,甚至一些個性化的,如顏色,字型,圖表樣式設定。如果按照方式1直接讀xml,改xml,必須找到對應的節點一一修改,可想而知工作量和難度有多大。如果按照方式2,

從定義報表檔案的海量**中,找出需要更改的專案難度和工作量也是很大的,

不過後來找到了乙個快速的方法,雖然不是sdk,但是應該算是最有效,最直接的辦法,就是把微軟自己的parser拿過來parse報表,用物件的方式修改,然後再儲存。

1、找到你的report server 目錄,一般是「c:\program files\microsoft sql server\msrs10.mssqlserver\reporting services\reportserver\bin」,下面有乙個assembly,名字叫「microsoft.reportingservices.designer.controls.dll」,這就是我們要用的parser。

2、建乙個project,把這個assembly加為引用,在程式中加

using

microsoft.reportingservices.rdlobjectmodel

類詳細資訊請參考:

**:

報表開發思路之主格(主格屬性)

單元格的擴充套件是針對具體的某乙個單元格,當報表主體中繫結了多個單元格時,單元格間會天然存在某種關係,使單元格間存在資料過濾關係,並且跟隨擴充套件,這就是主子格,前面的單元格稱之為主格,後面的單元格稱之為子格,也就是說子格的資料會根據主格的資料進行過濾分組顯示,並且還會跟隨主格的擴充套件方向而擴充套...

業務開發中動態匯出報表的一些思路

最近在業務開發中,遇到了乙個動態匯出報表的問題,匯出來的報表的行和列都不是固定的,之前沒有做過這樣的東西,剛開始不知道怎麼去下手。先說表是如何建的,剛開始有一種思路,就是每一列都建乙個字段,這樣的話就需要動態的去表裡邊加欄位,每次列有變化的時候,都要動態的去加一列,沒有使用這種方法。因為資料量不是很...

根據登入使用者控制報表展現效果(動態巨集)

根據登入使用者控制報表展現效果 動態巨集 新建一張空白報表 1 首先進行引數和巨集的設定。報表屬性 引數定義 如圖 我們的目的是根據登入的使用者不同,在arg1 sys userid 中獲取不同的值,來選擇要進行過濾的字段,例如sys userid root,則獲取所有雇員資訊,否則根據登入使用者的...