在 Tabulator 中模拟 Excel copy/paste
Mimic Excel copy/paste in Tabulator
我试图在 Tabulator 中模仿 Excel 的 copy/paste。简而言之,我想复制 (ctrl+c) 几个单元格值,然后将它们粘贴到 table.
中的其他位置
我的想法是:
- 复制几个单元格
- 单击我要开始粘贴的单元格。
- 将该单元格的对象存储在某处,以便我在粘贴数据时可以引用它
- Ctrl+v 或右键粘贴
- 使用我存储的单击单元格以及 clipboardPasteParser callback,我想从该回调构建一个 rowData 对象到 return(如文档中所述)。
- 使用 clipboardPasteAction callback,我将获取该 rowData 对象并使用它来更新单元格。
然而,据我所知,Tabulator 的剪贴板功能不支持这种 copy/paste 操作。在下面的代码片段中,您将看到我 console.log 在 clipboardPasteParser(clipboard)
回调中粘贴了结果。 clipboard
只是复制值的串联字符串。
例如,复制“Mary May”、“1”、“female”、“2”和“blue”,会在 clipboard
回调变量中生成字符串“Mary May1female2blue”。
如果您想尝试一下,这是代码。
var data = [
{
id: 1,
name: 'Mrs. Rafaela Barton',
progress: 50,
gender: 'male',
height: 4,
col: 'GhostWhite',
dob: '02/10/1986',
driver: false
},
{
id: 2,
name: 'Grant Kunze',
progress: 16,
gender: 'female',
height: 4,
col: 'DarkViolet',
dob: '05/07/1993',
driver: true
},
{
id: 3,
name: 'Marilou Morar',
progress: 30,
gender: 'female',
height: 2,
col: 'Turquoise',
dob: '14/10/1984',
driver: true
},
{
id: 4,
name: 'Nathan Fadel Jr.',
progress: 78,
gender: 'female',
height: 4,
col: 'SkyBlue',
dob: '01/11/1921',
driver: false
},
{
id: 5,
name: 'Mrs. Amya Eichmann',
progress: 44,
gender: 'female',
height: 3,
col: 'Aquamarine',
dob: '20/02/1937',
driver: false
}
];
var table = new Tabulator("#example-table", {
height:"311px",
data: data,
columns:[
{title:"Name", field:"name", width:150},
{title:"Height", field:"height", bottomCalc:"sum"},
{title:"Progress", field:"progress", formatter:"progress", sorter:"number"},
{title:"Gender", field:"gender"},
{title:"Rating", field:"rating", formatter:"star", hozAlign:"center", width:100},
{title:"Favourite Color", field:"col"},
{title:"Date Of Birth", field:"dob", hozAlign:"center", sorter:"date"},
{title:"Driver", field:"car", hozAlign:"center", formatter:"tickCross"},
],
clipboard:true,
clipboardPasteParser: function(clipboard) {
console.log(clipboard);
},
});
<!DOCTYPE HTML>
<html>
<head>
<link href="https://unpkg.com/tabulator-tables@4.9.3/dist/css/tabulator.min.css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/tabulator-tables@4.9.3/dist/js/tabulator.min.js"></script>
</head>
<body>
<div id="example-table"></div>
</body>
</html>
有什么方法可以让回调参数以某种方式分隔值,以便我可以在 clipboardPasteParser 回调中解析它?那可能吗?我是不是漏掉了什么?
我暗暗怀疑这个问题与 Tabulator 关系不大,而与浏览器如何处理复制有关。如果 Tabulator 能够在本地处理它,它仍然是一个不错的功能。
谢谢!!
目前无法实现,但细胞选择将在几个月后的 5.0 版本中推出
我试图在 Tabulator 中模仿 Excel 的 copy/paste。简而言之,我想复制 (ctrl+c) 几个单元格值,然后将它们粘贴到 table.
中的其他位置我的想法是:
- 复制几个单元格
- 单击我要开始粘贴的单元格。
- 将该单元格的对象存储在某处,以便我在粘贴数据时可以引用它
- Ctrl+v 或右键粘贴
- 使用我存储的单击单元格以及 clipboardPasteParser callback,我想从该回调构建一个 rowData 对象到 return(如文档中所述)。
- 使用 clipboardPasteAction callback,我将获取该 rowData 对象并使用它来更新单元格。
然而,据我所知,Tabulator 的剪贴板功能不支持这种 copy/paste 操作。在下面的代码片段中,您将看到我 console.log 在 clipboardPasteParser(clipboard)
回调中粘贴了结果。 clipboard
只是复制值的串联字符串。
例如,复制“Mary May”、“1”、“female”、“2”和“blue”,会在 clipboard
回调变量中生成字符串“Mary May1female2blue”。
如果您想尝试一下,这是代码。
var data = [
{
id: 1,
name: 'Mrs. Rafaela Barton',
progress: 50,
gender: 'male',
height: 4,
col: 'GhostWhite',
dob: '02/10/1986',
driver: false
},
{
id: 2,
name: 'Grant Kunze',
progress: 16,
gender: 'female',
height: 4,
col: 'DarkViolet',
dob: '05/07/1993',
driver: true
},
{
id: 3,
name: 'Marilou Morar',
progress: 30,
gender: 'female',
height: 2,
col: 'Turquoise',
dob: '14/10/1984',
driver: true
},
{
id: 4,
name: 'Nathan Fadel Jr.',
progress: 78,
gender: 'female',
height: 4,
col: 'SkyBlue',
dob: '01/11/1921',
driver: false
},
{
id: 5,
name: 'Mrs. Amya Eichmann',
progress: 44,
gender: 'female',
height: 3,
col: 'Aquamarine',
dob: '20/02/1937',
driver: false
}
];
var table = new Tabulator("#example-table", {
height:"311px",
data: data,
columns:[
{title:"Name", field:"name", width:150},
{title:"Height", field:"height", bottomCalc:"sum"},
{title:"Progress", field:"progress", formatter:"progress", sorter:"number"},
{title:"Gender", field:"gender"},
{title:"Rating", field:"rating", formatter:"star", hozAlign:"center", width:100},
{title:"Favourite Color", field:"col"},
{title:"Date Of Birth", field:"dob", hozAlign:"center", sorter:"date"},
{title:"Driver", field:"car", hozAlign:"center", formatter:"tickCross"},
],
clipboard:true,
clipboardPasteParser: function(clipboard) {
console.log(clipboard);
},
});
<!DOCTYPE HTML>
<html>
<head>
<link href="https://unpkg.com/tabulator-tables@4.9.3/dist/css/tabulator.min.css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/tabulator-tables@4.9.3/dist/js/tabulator.min.js"></script>
</head>
<body>
<div id="example-table"></div>
</body>
</html>
有什么方法可以让回调参数以某种方式分隔值,以便我可以在 clipboardPasteParser 回调中解析它?那可能吗?我是不是漏掉了什么?
我暗暗怀疑这个问题与 Tabulator 关系不大,而与浏览器如何处理复制有关。如果 Tabulator 能够在本地处理它,它仍然是一个不错的功能。
谢谢!!
目前无法实现,但细胞选择将在几个月后的 5.0 版本中推出