单击链接将可见行复制到用户的剪贴板缓冲区?

时间:2012-03-10 20:00:21

标签: jquery clipboard

如何将多行数据(例如<tr><td>cell 1</td><td>cell 2</td></tr> <tr><td>cell 3</td></td>cell 4</td></tr>)复制到用户的剪贴板中,准备好粘贴到Excel中(一个<td>对将转到Excel中的一个单元格)

我有这样的想法:

$('#copy').click(function(){
   var data = $('datatable tr:visible').text();
   alert("you have copied these data: " + data + "now you can paste them in Excel");
});

警告框中的数据变量无效。几乎卡在这里..

1 个答案:

答案 0 :(得分:2)

如果要将数据粘贴到Excel中,则可能需要在不同行中的每一行,每列由制表符分隔。例如:

var rows = []
$('datatable tr:visible').each(function() {
    var columns = [];
    $(this).children("td").each(function() {
        columns.push($(this).text());
    });
    rows.push(columns.join("\t");
});
var data = rows.join("\n");

jsFiddle的工作示例(改编自OP代码)

至于复制到clipboad,请参阅this question了解更多信息。

更新:从浏览器复制到剪贴板是一项复杂且可能不安全的操作,AFAIK在浏览器和操作系统之间无法一致地工作。也许最好只删除textarea中的文本,然后选择该文本,并请求用户Ctrl+C。但这取决于你。