最新历史版本 :Excel数据复制粘贴到填报单元格 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

FineReport 支持将 Excel 中的数据拷贝到填报页面中,再进行提交。

注:不支持移动端。

1.2 解决思路

填报预览时,先增加相应数量的空白记录,再将 Excel 中的数据拷贝到这些空白记录中。

2. 操作方法编辑

1)如下图所示设计填报报表。
222

2)选择填报预览打开报表,点击工具栏上的增加记录按钮,Excel 中需要复制多少行,浏览器上就要增加多少条空白记录

222

3)选中并复制(Ctrl+C)Excel 中的数据。

222

4)回到填报预览页面,粘贴数据。

单击数据左上角单元格,出现如下图所示的黑框时粘贴(Ctrl+V)。
222

5)点击提交即可。

3. 注意事项编辑

3.1 空值自动忽略

问题描述:

Excel 中的空值目前无法粘贴到填报页面,也就是空值会自动忽略跳过。

screenshot-1.png

解决方法:

可在设计器菜单栏「模板>模板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;
}

3.2 复制粘贴excel多个空白列,最后一列无法粘贴

问题描述:

复制的数据中存在空白列,复制的空白列无法粘贴进入模板,如下图所示:

2022-11-11_16-37-19.gif

解决方案:

如果需要复制粘贴 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;
}

3.3 不支持直接显示控件

如果勾选了直接显示控件,粘贴操作就会失效。

Snag_10709f0b.png