如何在Excel中實現三聯類模板?

本文由葡萄城技術團隊原創並首發。轉載請註明出處:葡萄城官網,葡萄城爲開發者提供專業的開發工具、解決方案和服務,賦能開發者。

前言

在一些報表打印應用場景中,會有類似於如下圖所示的排版格式:

一般情況下將這種類型的需求稱爲“三聯”類型,這種三聯需求的關鍵點在於以下兩點:

1. 部分單元格需要同時綁定多個字段,並將其組合爲一段文字,比如上圖中的義務教育入學報道單和義務教育入學通知書下方的兩段話,它們包含了日期信息和學校名稱信息。

2. 其中一聯的部分內容的高度是可變的,比方說上圖中,第二、三聯中間的那一段話的長度是不確定的,因此它所佔據的單元格行數也是不確定的。

下面小編就將爲分別爲大家介紹如何實現上面兩點需求:

1. 同一個單元格綁定多個字段

以上述應用場景爲例,小編分別用黃s色和藍色的背景色表示義務教育入學報道單和義務教育入學通知書下方的兩段話,它們都綁定了多個字段。

使用代碼實現將數據對象綁定在一個單元格內:

同時,使用自定義單元格來實現文本的拼接:

完整代碼可以點擊這裏:https://docs.grapecity.com.cn/spreadjs/practice/data-binding/cell-binding-object

2. 改變第二、三聯的單元格,並不影響第一聯的內容。

這裏的思路不是插入新的行,而是將第三聯下方的單元格向下移動,於是這裏便需要做兩件事,第一,記錄需要向下移動的區域;第二,計算要向下移動幾行。

關於第一點,可以選中區域,並使用上方的按鈕來設置需要向下移動的區域,將其記錄在tag中:

代碼如下:

而第二點,則稍微有點麻煩,因爲真實的文本需要幾行單元格展示,不僅和文字的長度有關,還與單元格的寬度(考慮到單元格是合併的,這裏需要分開計算並相加)、字體的大小都有關係:

計算文本長度時,使用canvas的measureText方法即可,需要將canvas的字體設置爲和表單中一致,文本存在自定義單元格的實例中,直接獲取即可:

最後,使用計算出來的diff,擴大單元格合併的範圍,並向下移動對應行數即可:

這裏要先移除合併單元格,再重新添加一次。

至此,核心的功能就完成了。

總結

以上就是在Excel中實現橫向排版/三聯類的模板的方法介紹。如果您想了解完整代碼,可以訪問下列Gitee/Github地址:

https://gitee.com/GrapeCity/typesetting_triple

https://github.com/GrapeCityXA/typesetting_triple

無論是初學者還是有經驗的專業人士,都將爲您提供有價值的指導和幫助。

擴展鏈接:

從表單驅動到模型驅動,解讀低代碼開發平臺的發展趨勢

低代碼開發平臺是什麼?

基於分支的版本管理,幫助低代碼從項目交付走向定製化產品開發

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章