找回密码
 立即注册

QQ登录

只需一步,快速开始

请叫我王裁缝

注册会员

8

主题

18

帖子

66

积分

注册会员

积分
66
请叫我王裁缝
注册会员   /  发表于:2023-3-15 18:16  /   查看:1454  /  回复:7
本帖最后由 Lynn.Dou 于 2023-3-17 18:20 编辑

有一个需求,需要从外部拖入一个html table 表格到spreadjs 中



想用直接调用内部的粘贴方法,直接将html内容粘贴到表格中,可以调用内部粘贴方法吗
如果不行,有工具可以将html数据转换为 spread可用的json数据吗

直接使用数组不行,合并单元格会被干掉
使用其他工具生成的数据spreadjs都不兼容


7 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-15 18:35:32
沙发
你可以通过ClipboardPasting事件,将cancel设置为true(取消系统自动的粘贴)
然后自己通过pasteData.html获取剪切板中的html,接下来就需要自己解析html然后设置单元格值了(给一个区域设置)

https://demo.grapecity.com.cn/sp ... nt:ClipboardPasting
回复 使用道具 举报
请叫我王裁缝
注册会员   /  发表于:2023-3-15 20:09:45
板凳
Richard.Ma 发表于 2023-3-15 18:35
你可以通过ClipboardPasting事件,将cancel设置为true(取消系统自动的粘贴)
然后自己通过pasteData.html ...

我的意思是想直接调用内部的html处理方法,将数据插入到表格中,
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-16 10:17:49
地板
目前没有提供这种api,我们提供了clipboardPaste命令,可以模拟粘贴,在你的需求场景中,你可以拖入到spreadjs 后,执行这个命令粘贴,

这个命令只能接受文本来粘贴,没法取剪切板中的 数据,你需要自己取到剪切板中的文本(如果是复制的表格,那么文本应该就是带\t和\r\n的),来执行粘贴

比如下面的代码
  1. var toRanges = [new GC.Spread.Sheets.Range(0, 0, 1, 1)];
  2. workbook.commandManager().execute({cmd: "clipboardPaste", sheetName: "Chart", fromSheet: null, fromRanges: null, pastedRanges: toRanges, isCutting: false, clipboardText: "2,438.68\t2,021.10\r\n5,280.77\t3,128.56\r\n4,590.73\t3,398.50\r\n4,338.80\t1,050.06\r\n", pasteOption: GC.Spread.Sheets.ClipboardPasteOptions.all});
复制代码


最终效果
image.png219674071.png
回复 使用道具 举报
请叫我王裁缝
注册会员   /  发表于:2023-3-16 11:04:54
5#
Richard.Ma 发表于 2023-3-16 10:17
目前没有提供这种api,我们提供了clipboardPaste命令,可以模拟粘贴,在你的需求场景中,你可以拖入到sprea ...

15.2.2试了没效果  setHtml(clipboardText) {
      var toRanges = [new GC.Spread.Sheets.Range(0, 0, 1, 1)]

      this.spread.commandManager().execute({
        cmd: 'clipboardPaste',
        sheetName: 'Chart',
        fromSheet: null,
        fromRanges: null,
        pastedRanges: toRanges,
        isCutting: false,
        clipboardText: clipboardText,
        pasteOption: GC.Spread.Sheets.ClipboardPasteOptions.all
      })
    }
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-16 11:24:02
6#
image.png23595580.png
回复 使用道具 举报
请叫我王裁缝
注册会员   /  发表于:2023-3-16 11:38:10
7#

这个方法无法保留合并单元格格式,spreadjs可以使用 sheetjs生成的xlsx格式的 json 数据吗
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-3-16 16:36:16
8#
即使你直接从外部一个包含合并单元格的普通表格中去复制粘贴到spreadjs(CTRL+C,+V),也是没办法保留合并单元格的

不过你如果是现在这样调用命令的话,倒是可以尝试,给text传入你所说的json字符串,

如果不做处理,那么这个json会被粘贴到一个单元格中作为文本,这个时候,你可以用我在2楼回复你的,在ClipboardPasting中,取消粘贴,自己解析json去设置单元格值。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部