找回密码
 立即注册

QQ登录

只需一步,快速开始

zjk

中级会员

79

主题

297

帖子

792

积分

中级会员

积分
792
zjk
中级会员   /  发表于:2024-5-10 10:17  /   查看:2253  /  回复:5
1金币
设计的这个ssjson ,无法复制新sheet ,麻烦帮忙看下,在附近里 用的你们提供的demo里

<template>
  <div id="app">
    <gc-spread-sheets-designer :styleInfo='styleInfo' :config='config' :spreadOptions='spreadOptions' @designerInitialized='designerInitialized'>
    </gc-spread-sheets-designer>
  </div>
</template>

<script>

  import '@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.css';
  import '@grapecity/spread-sheets-designer/styles/gc.spread.sheets.designer.min.css';
  import * as GC from '@grapecity/spread-sheets';
  import "@grapecity/spread-sheets-print";
  import "@grapecity/spread-sheets-shapes";
  // import "@grapecity/spread-sheets-slicers";
  import '@grapecity/spread-sheets-pivot-addon';
  import "@grapecity/spread-sheets-tablesheet";
  // import "@grapecity/spread-sheets-io";
  import '@grapecity/spread-sheets-resources-zh';
  GC.Spread.Common.CultureManager.culture("zh-cn");
  import '@grapecity/spread-sheets-designer-resources-cn';
  import "./custom.css";
  import * as ExcelIO from '@grapecity/spread-excelio';

  //Apply License
  //GC.Spread.Sheets.LicenseKey = 'sjs-distribution-key';
  //ExcelIO.LicenseKey = 'sjs-distribution-key';
  //GC.Spread.Sheets.Designer.LicenseKey = 'designer-component-distribution-key';

  import { Designer } from '@grapecity/spread-sheets-designer-vue';
  import ssjson from './report'

  export default {
    name: 'App',
    data: function () {
    var config = GC.Spread.Sheets.Designer.DefaultConfig;
    config.commandMap = {
      Welcome: {
        title: "Welcome",
        text: "Welcome",
        iconClass: "ribbon-button-welcome",
        bigButton: "true",
        commandName: "Welcome",
        execute: async (context, propertyName, fontItalicChecked) => {
          alert("Welcome to new designer.");
        },
      },
    };
    config.ribbon[0].buttonGroups.unshift({
      label: "NewDesigner",
      thumbnailClass: "welcome",
      commandGroup: {
        children: [
          {
            direction: "vertical",
            commands: ["Welcome"],
          },
          // This is custom button ----------------end-------------
        ],
      },
    });
      return {
        styleInfo: { height: "98vh", width: '100%' },
        config: config,
        spreadOptions: {
          sheetCount: 2,
        },
        ssjsonObj: ssjson,
        designer: null,
        test:{"$schema":"http://json-schema.org/draft-04/schema#","properties":{"recordNo":{"dataFieldType":"text","type":"string"},"entrustNo":{"dataFieldType":"text","type":"string"},"sampleNo":{"dataFieldType":"text","type":"string"},"sampleName":{"dataFieldType":"text","type":"string"},"testingBasis":{"dataFieldType":"text","type":"string"},"judgmentBasis":{"dataFieldType":"text","type":"string"}},"type":"object"}
      };
    },
    methods: {
      designerInitialized(value) {
        this.designer = value;
        this.designer.setData("treeNodeFromJson", JSON.stringify(this.test));
        this.designer.setData("oldTreeNodeFromJson", JSON.stringify(this.test));

        const workbook = this.designer.getWorkbook();
        let jsonObj = this.ssjsonObj;
        workbook.fromJSON(jsonObj)

        workbook.suspendPaint();
        let sheet = workbook.getActiveSheet();
        let rowCount = sheet.getRowCount();
        var columnCount = sheet.getColumnCount();
        console.log(888, rowCount)
        console.log(9999, columnCount)
        var fromRange = [new GC.Spread.Sheets.Range(-1, -1, -1, -1)];
        var toRange = [new GC.Spread.Sheets.Range(0, 0, rowCount, columnCount)];

        workbook.addSheet(1);
        var newSheet = workbook.getSheet(1);
        let newName = newSheet.name();
        console.log(1111111, newName)
        workbook.commandManager().execute(
            {
                cmd: "clipboardPaste",
                sheetName: newName,
                fromSheet: sheet,
                fromRanges: fromRange,
                pastedRanges: toRange,
                isCutting: false,
                clipboardText: "",
                pasteOption: GC.Spread.Sheets.ClipboardPasteOptions.all
            }
        );
        workbook.resumePaint();




      }
    }
  }
</script>
<style>
</style>


report.rar

5.66 KB, 下载次数: 1442

最佳答案

查看完整内容

您好,注意到您的代码中是新建了一个Sheet2并通过clipboardPaste指令去进行整个sheet内容的复制粘贴,这边需要特别注意一下,您需要将复制区域大小和粘贴区域大小相同即: 其次,您期望的是对整个sheet进行复制粘贴,为什么不直接通过copySheet指令来进行复制粘贴呢,因为上面的指令复制只会复制内容,对于行高列宽是不会复制的

5 个回复

倒序浏览
最佳答案
最佳答案
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-10 10:17:52
来自 3#
本帖最后由 Richard.Huang 于 2024-5-10 11:43 编辑

您好,注意到您的代码中是新建了一个Sheet2并通过clipboardPaste指令去进行整个sheet内容的复制粘贴,这边需要特别注意一下,您需要将复制区域大小和粘贴区域大小相同即:
  1. var fromRange = [new GC.Spread.Sheets.Range(0, 0, rowCount, columnCount)];
  2. var toRange = [new GC.Spread.Sheets.Range(0, 0, rowCount, columnCount)];

  3. workbook.addSheet(1);
  4. var newSheet = workbook.getSheet(1);
  5. newSheet.setRowCount(rowCount);// 注意要将新的Sheet设置和老Sheet一样的行列数
  6. newSheet.setColumnCount(columnCount);
复制代码
其次,您期望的是对整个sheet进行复制粘贴,为什么不直接通过copySheet指令来进行复制粘贴呢,因为上面的指令复制只会复制内容,对于行高列宽是不会复制的
  1. spread.commandManager().execute({
  2.     "cmd": "copySheet",
  3.     "sheetName": "Sheet1",
  4.     "targetIndex": 2,
  5.     "newName": "Sheet1 (4)"
  6. })
复制代码

回复 使用道具 举报
zjk
中级会员   /  发表于:2024-5-10 11:20:58
2#
1111111111111
回复 使用道具 举报
zjk
中级会员   /  发表于:2024-5-10 13:46:52
4#
Richard.Huang 发表于 2024-5-10 11:37
您好,注意到您的代码中是新建了一个Sheet2并通过clipboardPaste指令去进行整个sheet内容的复制粘贴,这边 ...

你好,我基于提供的demo进行修改 还是无效果

image.png701622314.png
回复 使用道具 举报
zjk
中级会员   /  发表于:2024-5-10 14:46:53
5#
可以了 谢谢啦。
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-10 15:02:48
6#
好的,本帖子的问题解决,这里就先结帖了。后续如果您有新的问题,也欢迎创建新的求助帖。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部