新窗口打开
Excel数据复制粘贴到填报单元格
文档创建者:文档助手1 (白丁 )     浏览次数:53947次    编辑次数:17次     最近更新:Fairy.Zhang-张丹 于 2024-10-29     

目录:

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. 下载模板

点击下载已完成模板:Excel数据复制粘贴到填报单元格.cpt

点击下载 Excel 文件:地区销售额填报.xlsx

4. 注意事项

4.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;
}

4.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;
}

4.3 不支持直接显示控件

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

Snag_10709f0b.png

附件列表




标签: 暂无标签 编辑/添加标签

文档内容仅供参考,如果你需要获取更多帮助,请咨询帆软技术支持
关于技术问题,您还可以通过帆软论坛获取帮助,论坛上有非常多的大神,有些水平比帆软工程师还要高哦。
若您还有其他非技术类问题,可以联系帆软传说哥(微信ID:frbiaoge)