1. 概述
Excel 雙向導入是指标題行列是從單元格擴展得到的,并且用於導入數據的單元格也是可擴展的,如下圖所示效果,标題字段通過橫向擴展得到,導入數據的單元格爲縱向擴展,導入不定行數據:
Excel 雙向導入模板在 Web 端填報預覽打開之後,其展示效果與固定标題行導入不定行是一樣的,那麽雙向導入的邏輯仍然是首先根據标題匹配,如果标題匹配不上或者只有一個可以匹配上或者設置了不執行根據标題匹配,則執行根據位置匹配。
2. 示例
下面我們用已知的 Excel 表 excelimport.xls ,和 FRDemo 中的「産品」表作爲示例。
2.1 模板準備
新建普通報表,添加
,點擊「表設計」僅增加一列數據,将列名改爲「标題行」,點擊确定,再點擊「插入行」将 Excel 中對應的标題名稱填入,步驟如下圖所示:将内置數據集的标題行數據列拖拽到 A2 單元格中,設置 單元格屬性>擴展方向 爲「橫向擴展」,給 A3 單元格添加「文本控件」,并将 A3 單元格設置爲「縱向擴展」,如下圖所示:
2.2 設置報表填報屬性
1)點擊「模板>報表填報屬性」,添加一個「内置 SQL」提交,選擇「智能提交」類型,選擇 FRDemo 中的「産品」表。點擊智能添加字段,将除「單位數量」之外的所有字段添加進來,勾選「産品ID」作爲主鍵。
2)因爲本例單元格是由橫向擴展和縱向擴展得到的,所以數據列對應的值需要使用「絕對層次坐标」獲取,例如産品 ID 列的值爲公式 A3[;A2:1],即返回 A2 行的第一個數值對應的 A3 單元格的數值。詳情可參見:層次坐标 。
具體公式和步驟如下所示:
列 | 值 |
---|---|
産品ID | A3[;A2:1] |
産品名稱 | A3[;A2:2] |
供應商ID | A3[;A2:3] |
類别ID | A3[;A2:4] |
成本價 | A3[;A2:5] |
單價 | A3[;A2:6] |
庫存量 | A3[;A2:7] |
訂購量 | A3[;A2:8] |
再訂購量 | A3[;A2:9] |
中止 | A3[;A2:10] |
2.3 工具欄設置
點擊「模板>模板 Web 屬性>填報頁面設置」,選擇「爲該模板單獨設置」,勾選
,先清空工具欄,然後在按鈕面板中雙擊「提交」按鈕和「導入 Excel」 按鈕,将這兩個按鈕添加到頂部工具欄中,如下圖所示:2.4 Excel 導入配置
點擊「模板> Excel 導入配置」,默認單元格匹配邏輯爲「先按标題匹配,不通過再按單元格位置匹配」,勾選「雙向擴展格導入」。詳情可參見:Excel導入邏輯設置插件 。
2.5 效果預覽
爲了預覽效果比對,本地先使用 Navicat Premium 清空了産品表。并且再報表中添加了一個數據庫查詢 ds1 預覽數據,SQL 語句爲:SELECT * FROM 産品 。
保存報表,點擊「填報預覽」,效果如下圖所示:
3. 模板下載
已完成模板可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\ExcelImport\Excel雙向導入.cpt。
點擊下載模板:Excel雙向導入.cpt