使用JavaScript处理来自Google表格,Excel或HTML的剪贴板数据

时间:2018-08-27 10:10:04

标签: javascript html html-table

我正在寻找处理来自Google表格,Excel和纯HTML表的数据的功能。

我在粘贴事件上使用clipboard data来获取剪贴板的内容。

var clipText = event.clipboardData.getData('text/plain');

尽管我不太确定如何处理数据以及使用哪些符号来分隔行和列。理想情况下,我希望有一个行数组和一个列数组。

Holidays taken in the last six months ID Name July August September October November December 215 Abel 5 2 0 0 0 3 231 Annette 0 5 3 0 0 6 173 Bernard 2 0 0 5 0 0 141 Gerald 0 10 0 0 0 8 99 Michael 8 8 8 8 0 4

例如从HTML生成的纯文本就是这种格式的结果,有些单元格用3个空格分隔,有些用2个空格分隔(Gerald 10-> 0)

我想要的结果:

[
   [ID, Name, July, August, September, October, November, December],
   [215, Abel, 5, 2, 0, 0, 0, 3],
   [231, Annette, 5, 3, 0, 0, 0, 3]
    ...
]

是否有任何特殊字符可用于中断/分隔剪贴板中的表格数据?

1 个答案:

答案 0 :(得分:0)

如果要连续用两个或多个空格定界,可以使用正则表达式来做到这一点:

const clipText = event.clipboardData.getData('text/plain')
const splitByLines = clipText.split(/\r\n|\n|\r/g, clipText)  // Split lines for Windows (\r\n) or Linux/OSX (\n).  See note below...
const splitBySpaces = splitByLines.forEach(line => line.split(/\s{2,}/g))  // Split each line everywhere there are 2 or more spaces in a row

如果您要支持Unicode输入或某些真正晦涩的系统,则应查看ECMA认为什么是“行尾”字符:https://www.ecma-international.org/ecma-262/10.0/#sec-line-terminators