找回密码
 立即注册

QQ登录

只需一步,快速开始

tc_tc

注册会员

4

主题

13

帖子

146

积分

注册会员

积分
146
最新发帖

[已处理] 请求一个帮助

tc_tc
注册会员   /  发表于:2016-9-8 14:10  /   查看:4068  /  回复:9
想问下,我用设计器做好了一个模板,并成功加载到了web程序的SpreadJS控件中,该模板有的单元格是不能编辑的,有的是可以编辑的。现在需求如下:
我用Excel做好了数据表格,该表格和用设计器做的模板一样,Excel中携带数据,我如何把Excel中的数据复制到我的web程序的SpreadJS表格中,我需要的是整张表格复制,不是复制一部分,web程序直接ctrl+v可以操作吗?可以跳过不能编辑的表格吗?谢谢!!

9 个回复

倒序浏览
CCKan
银牌会员   /  发表于:2016-9-8 15:22:24
沙发
SpreadJS支持 ctrl+v 复制 Excel 整张表格的数据。但当前版本中,只有当要复制的区域所有单元格都可以编辑的情况下,才能成功粘贴
回复 使用道具 举报
tc_tc
注册会员   /  发表于:2016-9-8 15:50:40
板凳
请问是否可以重写粘贴前的事件呢?如果可以的话,该怎么处理?
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2016-9-8 18:11:28
地板
  1. var oldPaste = GcSpread.Sheets.SpreadActions.paste,
  2.     oldSetValue = GcSpread.Sheets.Sheet.prototype.setValue;
  3. sheet.addKeyMap(GcSpread.Sheets.Key.v, true, false, false, false, function () {
  4.     sheet.setIsProtected(false);
  5.     GcSpread.Sheets.Sheet.prototype.setValue = function (row, col, value, sheetArea, ignoreRecalc) {
  6.         if (sheet.getCell(row, col).locked()) {
  7.             return;
  8.         }
  9.         oldSetValue.call(this, row, col, value, sheetArea, ignoreRecalc);
  10.     };

  11.     oldPaste.call(this);
  12.     window.setTimeout(function () {
  13.         GcSpread.Sheets.Sheet.prototype.setValue = oldSetValue;
  14.         sheet.setIsProtected(true);
  15.     }, 200)
  16. })
复制代码


目前没有什么特别好的办法,用上面的代码应该能解决你的问题,不过我们不保证上面的代码在以后的版本能正常工作。

评分

参与人数 1金币 +999 收起 理由
Alice + 999

查看全部评分

回复 使用道具 举报
tc_tc
注册会员   /  发表于:2016-9-9 09:07:42
5#
谢谢,我测试下看看再说。
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-9-9 15:17:35
6#
tc_tc 发表于 2016-9-9 09:07
谢谢,我测试下看看再说。

谢谢反馈。
此问题关闭,如果有问题您可以继续跟帖。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
tc_tc
注册会员   /  发表于:2016-9-12 10:17:18
7#
页面直接监控不到进入了该事件,具体代码如下:
sheet.addKeyMap(GcSpread.Sheets.Key.v, true, false, false, false, function ()
                {
                        sheet.setIsProtected(false);
                        alert("test");
                    sheet.setIsProtected(true);
                });
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2016-9-12 14:06:11
8#
我用你的代码完全正常啊,你 Debug 一下 sheet.addKeyMap() 这个函数是否执行到了? 或者 sheet 引用是否正确
回复 使用道具 举报
tc_tc
注册会员   /  发表于:2016-9-13 11:25:00
9#
我这里重新更换了思路,Excel文件上传到后台解析,把结果返回前台填充到页面表格上。对于楼上的回复表示感谢,请问楼上是否可以提供demo,方便下次研究下。谢谢。
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2016-9-13 18:13:54
10#
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title></title>
  5.     <meta charset="utf-8" />
  6.     <script src="http://code.jquery.com/jquery-3.1.0.js"></script>
  7.     <link href="http://cdn.grapecity.com/spreadjs/hosted/css/gcspread.sheets.excel2016colorful.9.40.20161.0.css" rel="stylesheet" type="text/css" />
  8.     <script type="text/javascript" src="http://cdn.grapecity.com/spreadjs/hosted/scripts/gcspread.sheets.all.9.40.20161.0.min.js"></script>
  9.     <script type="text/javascript">
  10.         $(document).ready(function () {
  11.             init();
  12.         });
  13.         function init() {
  14.             var spread = new GcSpread.Sheets.Spread($("#ss")[0]);
  15.             spread.setSheetCount(3);
  16.             var sheet = spread.getActiveSheet();
  17.             
  18.             sheet.setIsProtected(true);
  19.             sheet.getCell(0, 0).locked(false);
  20.             sheet.getCell(1, 1).locked(false);
  21.             sheet.getCell(2, 2).locked(false);
  22.             sheet.getCell(2, 3).locked(false);

  23.             var oldPaste = GcSpread.Sheets.SpreadActions.paste,
  24.             oldSetValue = GcSpread.Sheets.Sheet.prototype.setValue;
  25.             sheet.addKeyMap(GcSpread.Sheets.Key.v, true, false, false, false, function () {
  26.                 sheet.setIsProtected(false);
  27.                 GcSpread.Sheets.Sheet.prototype.setValue = function (row, col, value, sheetArea, ignoreRecalc) {
  28.                     if (sheet.getCell(row, col).locked()) {
  29.                         return;
  30.                     }
  31.                     oldSetValue.call(this, row, col, value, sheetArea, ignoreRecalc);
  32.                 };

  33.                 oldPaste.call(this);
  34.                 window.setTimeout(function () {
  35.                     GcSpread.Sheets.Sheet.prototype.setValue = oldSetValue;
  36.                     sheet.setIsProtected(true);
  37.                 }, 200)
  38.             })
  39.         }
  40.     </script>
  41. </head>
  42. <body>
  43.      <div id="ss" class="spread" style="width:1200px;height:300px"></div>
  44. </body>
  45. </html>
复制代码


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部