1. 描述
大家都知道 Excel 功能非常強大,但是 FineReport 中有些 Excel 功能是無法實現的;比如一計算公式:E3*F1,我想要實現 E3 列儲存格增量而 F1 儲存格不變動 的計算時,Excel 中用儲存格絕對引用(=E3*$F$1)很容易實現的,但是 FineReport 直接下拉拖動是無法實現的。如果直接拖曳,儲存格會隨着增量,如圖所示:
正確的效果:
2. 思路
這個問題本質上是公式自動擴展問題。其實FR只是支援 Excel 的常用公式,Excel 公式非常多,並不是完全支援的。 既然這裏=E3*F1 進行拖曳後,會自動增長行列序號。 那麼讓F1是個計算的結果而不是個儲存格就可以了。
3. 解決方案
利用 eval 公式只傳回計算結果而不是儲存格就行;我們可以在 G3 儲存格輸入公式:= E3 *eval("F" "1")
在公式執行前, 這個運算子不執行,所以公式裏不存在 F1 儲存格,所以縱向拖曳這個公式即可。
注:由於這裏計算公式裏F1是透過 eval 的計算結果,假設這裏是填報,比如F1儲存格的值是個正文框,值修改之後, G3/G4/G5/G6 的計算結果不會動態聯動改變的
4. 預覽效果
儲存後,點選分頁預覽,即可看到如上描述中的效果。