excel伺服器教程之本期累計
本節的銷售日報過於簡單,假設我們希望在日報上不僅要體現當天的銷售情況,還要體現從月初到日報當天的累積銷售情況,就像下圖所示的這樣:
工具/原料
excel伺服器教程
建立模板《新日報》
按圖11-5所示表樣建立模板《新日報》
定義單一資料項:新日報_主表
主鍵 區域 欄位名 資料型別 必填 填寫規範 其它
√ C2 日期 日期 當前日期
H2 上次日期 日期
選中B5:H14,定義重複資料項。注意第一步的上方標題行數要輸入2。
最後定義好新資料表:新日報_明細
第一條公式----提取所有產品
在《新日報》模板上新建如下的表間公式
切換到“顯示範圍”選項卡下,選擇“重複資料只填充一次”。
注意兩處:1)應用方式我們選擇了“新建開啟時”,效果就是,當我們填報的時候,空白日報一開啟,這條表間公式馬上就執行。2)在顯示方式處,我們選中了“重複資料只填充一次”。這是因為物料表中可能有這樣的資料:名稱相同,規格不同,所以如果全部提取出來會出現同樣的品名重複顯示好幾行的情況,此選項用於保證重複的資料只顯示一次。
按行(列)匹配
具體來說,按行(列)匹配就是依照表間公式的查詢結果中的某個部分(在這裡是“產品名稱”),到工作表上找到相同的取值,確定其所在的行(或列),然後把查詢結果的其餘部分填充到對應的行(或列)上。
定義按行列匹配的表間公式
在新日報上定義表間公式,其來源資料和篩選條件均和11.1節的公式相同,僅填充方式有變化,如下圖11-12,對“產品名稱”要選擇“按行(列)匹配”
完整的表間公式如下:
提取上次日報的日期
因為我們平時有工作日,當然也有周末或者節假日,所以,上一張日報的日期不能簡單的用當前日期減一天得出,下面,我們用表間共識來提取上次日報的日期:
注意:在做“填充方式”時,把“新日報_日期”前面加號展開後,下面有很多日期函式,我們運用的是“最晚()”函式。
滾動累加
現在來提取上次日報上的累計數,定義表間公式如下:
相對於勤哲excel伺服器中的本期累計功能,因為軟體自身功能定位的因素,FineReport的先關功能顯然更豐富一些,具體介紹如下:
FineReport報表的資料模型,由於是通過單元格繫結資料列擴充套件,來實現資料的讀取和展現。所以在設計介面上的某個單元格時,可採用層次座標的方式,對擴充套件後的每個單元格進行精確定位,得到某個單元格擴充套件後的其他多條資料。通常像EXCEL中設計表格時,需將所得的資料進行一些運算。在FineReport中,若要對資料列擴充套件返回的結果集進行一些運算,較為常見的有:對擴展出的資料進行編號,資料排名,同期比與環比,佔比,累計等等。在Finereport中,累計的分類更為詳細,主要分為逐層累計、跨層累計、交叉表的累計,下面主要介紹逐層累計:
逐層累計就是在分組報表中,每一組中分別將每層與上一層資料相加,得到這一層的累計結果,如下圖所示的年度累計:
開啟報表
開啟報表%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\Cacuate_Between_Cells\PeriodChain.cpt。
修改報表,將同期比改為累計。
逐層累計
方法一:
在D3單元格中,寫入累計公式=D3[B3:-1] + C3:在一年內上一個月累計後的金額加當前月的金額,如下圖:
方法二:
在D3單元格中直接使用逐層累計公式=LAYERTOTAL(B3, C3, D3),等同於公式=D3[B3:-1] + C3,如果為橫向擴充套件,則傳遞第四個引數值false,例如:=LAYERTOTAL(B3, C3, D3,false)。
儲存並預覽
儲存模板,點選分頁預覽,效果如上。模板效果線上檢視請點選Accumulative_1.cpt
已完成模板可參考%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\Cacuate_Between_Cells\Accumulative_1.cpt。