FastReport之單元格縱向合併

2021-10-07 14:08:09 字數 2038 閱讀 5784

最近在做乙個報表,客戶堅持要報表實現行合併,使用了textobject的duplicates屬性,設定為merge。但是效果不太好,相鄰的相似就合併,顯得報表很雜亂,效果如下:

而客戶想要的效果是這樣的:

網上搜了一下關於fastreport單元格合併的文章,有說改原始碼的,有說寫指令碼的,還有人賣修改後的控制項的,總之沒有找到現成的方法。所以在客戶的壓力下不得不自己想辦法解決,首先想著改原始碼,可是沒有原始碼啊!!!反編譯出來的又太雜亂,編譯錯誤一大堆,所以就改為從指令碼入手了。

其實要實現客戶這種效果,只要解決不同「層級」間即使內容相同也不合併就可以了。怎樣使不同「層級」的單元格,即使內容相同也不合併呢,這裡用duplicates屬性設定為merge顯然不能實現了,所以我想到了之前做專案遇到過的不可見字元的問題。在ascii碼中有很多特殊字元,比如「(char)0」,它就是乙個不顯示的字元,如果相鄰「層級」的資料按奇偶行的模式分別在前面加上空字串("")和不可見字元(((char)0).tostring()),豈不是在不同「層級」間就不合併了!

private void text5_beforeprint(object sender, eventargs e)

text5.text=lastadd+text5.text;

}

因為不同「層級」間「層級」和「物料編號」不會相同,所以選擇最左邊會出現相同的「物料名稱」的beforeprint事件來做這一動作。由於報表資料載入是從左到右、自上而下,所以後面的textobject只需要把lastadd加上就可以了。

詳細**如下:

using system;

using system.collections;

using system.collections.generic;

using system.componentmodel;

using system.windows.forms;

using system.drawing;

using system.data;

using fastreport;

using fastreport.data;

using fastreport.dialog;

using fastreport.barcode;

using fastreport.table;

using fastreport.utils;

namespace fastreport

private void text5_beforeprint(object sender, eventargs e)

text5.text=lastadd+text5.text;

}private void text7_beforeprint(object sender, eventargs e)

private void text19_beforeprint(object sender, eventargs e)

private void text21_beforeprint(object sender, eventargs e)

private void text23_beforeprint(object sender, eventargs e)

private void text25_beforeprint(object sender, eventargs e)

private void text27_beforeprint(object sender, eventargs e)

private void text29_beforeprint(object sender, eventargs e)

private void text31_beforeprint(object sender, eventargs e)

}}

這樣就可以實現客戶想要的效果了。

Element table元件單元格合併(縱向)

一 計算 1.html 2.對源資料進行計算 初始化合併參數列 var cols 參與合併的字段,在這裡增加即可 var loca 合併座標與數量 for var i in cols for var i 0 i pdata.rows.length i else 設定行號 for var q in l...

清空合併單元格之隱藏單元格

合併單元格有真有假,如果大家不知道二者的區別,請移步 excel合併單元格之真假李逵 先了解一下。識別兩種合併單元格的方法也很簡單,輔助列使用公式讀取一下單元格內容,如果合併單元格之隱藏單元格仍然有內容,那麼這就是貼上格式建立的合併單元格。接下來要講的合併單元格是用貼上格式產生的,如果希望清空d列中...

TableView之修改單元格

import uikit class viewcontroller uiviewcontroller,uitableviewdatasource,uitableviewdelegate else 對應storyborad insert按鈕的action ibaction func insertbut...