1. 概述
1.1 應用場景
FineReport 支援將 Excel 中的資料copy到填報頁面中,再進行提交。
注:不支援行動端。
1.2 解決思路
填報預覽時,先增加相應數量的空白記錄,再將 Excel 中的資料copy到這些空白記錄中。
2. 操作方法
1)如下圖所示設計填報報表。

2)選擇填報預覽開啟報表,點選工具欄上的增加記錄按鈕,Excel 中需要複製多少行,瀏覽器上就要增加多少條空白記錄。

3)選中並複製(Ctrl+C)Excel 中的資料。

4)回到填報預覽頁面,貼上資料。
按資料左上角儲存格,出現如下圖所示的黑框時貼上(Ctrl+V)。

5)點選提交即可。
3. 下載範本
4. 注意事項
4.1 空值自動忽略
問題描述:
Excel 中的空值目前無法貼上到填報頁面,也就是空值會自動忽略跨越。

解決方法:
可在設計器菜單欄「範本>範本Web屬性>填報頁面設定」中新增載入結束事件(引入js檔案或貼上程式碼都行),此時範本web屬性裏選擇為此範本單獨設定。或在「伺服器>伺服器配置>填報頁面設定」中新增載入結束事件(引入js檔案或貼上程式碼都行),此時範本web屬性裏要選擇採用伺服器設定。
JS程式碼如下:
FR.WritePane.prototype.dealWithPasteContent = function(value) {
if (value.endWith('\n')) {
value = value.substring(0, value.length - 1);
}
return this._parsePasteContentToArray(value);
}
FR.WritePane.prototype.cellPasteCheck = function(cell, cev, editorO) {
return cev !== null && !editorO.disabled && editorO.editable !== false && editorO.directEdit !== false;
}
4.2 複製貼上excel多個空白欄,最後一欄無法貼上
問題描述:
複製的資料中存在空白欄,複製的空白欄無法貼上進入範本,如下圖所示:

解決方案:
如果需要複製貼上 Excel 中的空白行或空白列,需要在載入結束事件中新增的JS,JAR版本要求在2019-12-05以上
FR.WritePane.prototype.dealWithPasteContent = function(value) {
if (value.endWith('/n')) {
value = value.substring(0, value.length);
}
return this._parsePasteContentToArray(value);
}
FR.WritePane.prototype.cellPasteCheck = function(cell, cev, editorO) {
return cev !== null && !editorO.disabled && editorO.editable !== false && editorO.directEdit !== false;
}
FR.WritePane.prototype._parsePasteContentToArray = function(value) {
var rows = [], start_index = 0, flag = false;
for (var i = 0; i < value.length; i++) {
var cr = value.charAt(i);
if (cr === '"') {
flag = !flag;
} else if (cr === '\n' && !flag) {
rows.push(value.substring(start_index, i)
.replaceAll('""', '\n\r')
.replaceAll('"', '')
.replaceAll('\n\r', '"'));
start_index = i + 1;
}
}
if (start_index < value.length) {
rows.push(value.substring(start_index, value.length)
.replaceAll('""', '\n\r')
.replaceAll('"', '')
.replaceAll('\n\r', '"'));
}
for (var i = 0; i < rows.length; i++) {
rows[i] = rows[i].split('\t');
}
return rows;
}
4.3 不支援直接顯示元件
如果勾選了「直接顯示元件」,貼上操作就會失效。
