找回密码
 立即注册

QQ登录

只需一步,快速开始

云智装
金牌服务用户   /  发表于:2022-1-10 14:04  /   查看:3008  /  回复:6
本帖最后由 Lynn.Dou 于 2022-1-13 18:22 编辑

版本:最新
描述
1、在sheet1添加一个表格;
image.png856158752.png
2、在sheet2同样也添加一个表格,
image.png344723204.png
3、设置sheet2中金额的第一行等于sheet1金额的和
image.png843741454.png
4、移动sheet2的金额的这一列到Item前面
image.png179854125.png
结果:B2引入公式已经发生了改变,没移动前:=SUM(tableSales[[#Data], [金额]]),移动后:=SUM(tableSales[[#Data], [Delivered]])
image.png945224914.png
测试demo
  1. import * as React from 'react';
  2. import * as ReactDOM from 'react-dom';
  3. import '@grapecity/spread-sheets-resources-zh';
  4. GC.Spread.Common.CultureManager.culture("zh-cn");
  5. import GC from '@grapecity/spread-sheets';
  6. import { SpreadSheets } from '@grapecity/spread-sheets-react';
  7. import './styles.css';

  8. const Component = React.Component;
  9. const GCsheets = GC.Spread.Sheets;

  10. function _getElementById(id) {
  11.     return document.getElementById(id);
  12. }

  13. class App extends Component {
  14.     constructor(props) {
  15.         super(props);
  16.         this.spread = null;
  17.         this.table = null;
  18.         this.state = {
  19.             dirtyRowsValue: null
  20.         };
  21.     }
  22.     render() {
  23.         return (
  24.             <div class="sample-tutorial">
  25.                 <div class="sample-spreadsheets">
  26.                     <SpreadSheets workbookInitialized={spread=>this.initSpread(spread)}>
  27.                     </SpreadSheets>
  28.                 </div>
  29.                 <Panel
  30.                     dirtyRowsValue={this.state.dirtyRowsValue}
  31.                     onGetDirtyRowsClickEvent={(e)=>{this.onGetDirtyRowsClickEvent(e)}}
  32.                     yidong={(a,b)=>{this.yidong(a,b)}}
  33.                 />
  34.             </div>
  35.         );
  36.     }
  37.     initSpread(spread) {
  38.         this.spread = spread;
  39.         spread.suspendPaint();
  40.         let sheet = spread.getActiveSheet();

  41.         let data = {
  42.             name: 'Jones', region: 'East',
  43.             sales: [
  44.                 {orderDate: '1/6/2013', item: 'Pencil', num: 95, cost: 1.99, isDelivered: true},
  45.                 {orderDate: '4/1/2013', item: 'Binder', num: 60, cost: 4.99, isDelivered: false},
  46.                 {orderDate: '6/8/2013', item: 'Pen Set', num: 16, cost: 15.99, isDelivered: false}
  47.             ]
  48.         };
  49.         let table = sheet.tables.add('tableSales', 0, 0, 5, 5);
  50.         this.table = table;
  51.         table.style(GCsheets.Tables.TableThemes["medium4"]);
  52.         let tableColumn1 = new GCsheets.Tables.TableColumn(1, "orderDate", "Order Date", "yyyy-mm-dd");
  53.         let tableColumn2 = new GCsheets.Tables.TableColumn(2, "item", "Item");
  54.         let tableColumn3 = new GCsheets.Tables.TableColumn(3, "num", "数量");
  55.         let tableColumn4 = new GCsheets.Tables.TableColumn(4, "cost", "金额");
  56.         let tableColumn5 = new GCsheets.Tables.TableColumn(5, "isDelivered", "Delivered", null, new GC.Spread.Sheets.CellTypes.CheckBox());
  57.         table.autoGenerateColumns(false);
  58.         table.bind([tableColumn1, tableColumn2, tableColumn3, tableColumn4, tableColumn5], 'sales', data);
  59.         sheet.setColumnWidth(0, 120);
  60.         sheet.setColumnWidth(1, 120);
  61.         sheet.setColumnWidth(2, 120);
  62.         sheet.setColumnWidth(3, 120);
  63.         sheet.setColumnWidth(4, 120);
  64.         spread.resumePaint();
  65.     }
  66.     addTabl(){
  67.        const spread=this.spread;
  68.         spread.suspendPaint();
  69.         let sheet = spread.getActiveSheet();

  70.         let data = {
  71.             name: 'Jones', region: 'East',
  72.             sales: [
  73.                 {orderDate: '1/6/2013', item: 'Pencil', num: 95, cost: 1.99, isDelivered: true},
  74.                 {orderDate: '4/1/2013', item: 'Binder', num: 60, cost: 4.99, isDelivered: false},
  75.                 {orderDate: '6/8/2013', item: 'Pen Set', num: 16, cost: 15.99, isDelivered: false},
  76.                  {orderDate: '6/8/2013', item: 'Pen Set', num: 16, cost: 15.99, isDelivered: false}
  77.             ]
  78.         };
  79.         let table = sheet.tables.add('tableSales02', 0, 0, 5, 5);
  80.         this.table = table;
  81.         table.style(GCsheets.Tables.TableThemes["medium4"]);
  82.         let tableColumn1 = new GCsheets.Tables.TableColumn(1, "orderDate", "Order Date", "yyyy-mm-dd");
  83.         let tableColumn2 = new GCsheets.Tables.TableColumn(2, "item", "Item");
  84.         let tableColumn3 = new GCsheets.Tables.TableColumn(3, "num", "数量");
  85.         let tableColumn4 = new GCsheets.Tables.TableColumn(4, "cost", '金额');
  86.         let tableColumn5 = new GCsheets.Tables.TableColumn(5, "isDelivered", "Delivered", null, new GC.Spread.Sheets.CellTypes.CheckBox());
  87.         table.autoGenerateColumns(false);
  88.         table.bind([tableColumn1, tableColumn2, tableColumn3, tableColumn4, tableColumn5], 'sales', data);
  89.         sheet.setColumnWidth(0, 120);
  90.         sheet.setColumnWidth(1, 120);
  91.         sheet.setColumnWidth(2, 120);
  92.         sheet.setColumnWidth(3, 120);
  93.         sheet.setColumnWidth(4, 120);
  94.         spread.resumePaint();
  95.     }
  96.     //移动封装
  97.     yidong(fromColumn, toColumn) {
  98.            const spread=this.spread;
  99.             let sheet = spread.getActiveSheet();
  100.             spread.suspendPaint();
  101.             spread.commandManager().execute({
  102.             cmd: 'dragDrop',
  103.             sheetName: sheet.name(),
  104.             fromRow: -1,
  105.             fromColumn: fromColumn,//从哪一行开始移动
  106.             toRow: -1,
  107.             toColumn: toColumn,//总的要移动多少列(移动列数就等于:总的6-3=3)
  108.             rowCount: -1,
  109.             columnCount: 1,//移动的列数
  110.             copy: false,
  111.             insert: true,
  112.             option: GCsheets.CopyToOptions.all
  113.             });
  114.             spread.resumePaint();
  115.   }
  116.     onGetDirtyRowsClickEvent(e) {
  117.         this.addTabl()
  118.     }
  119.    
  120. }

  121. class Panel extends Component{

  122.     constructor(props){
  123.         super(props);
  124.     }
  125.     render(){
  126.         return (
  127.             <div class="options-container">
  128.                 <div class="option-row">
  129.                     <label class="custom-label">Change table data and click button to get the dirty rows.</label>
  130.                 </div>
  131.                 <input type="button" id="getState" value="addTable" onClick={(e)=>{this.props.onGetDirtyRowsClickEvent(e)}} />
  132.                 <input type="button" id="getState" value="移动" onClick={(e)=>{this.props.yidong(3,1)}} />
  133.                 <textarea id="stateText" class="state-text" value={this.props.dirtyRowsValue}></textarea>
  134.             </div>
  135.         );
  136.     }
  137. }

  138. ReactDOM.render(<App />, _getElementById('app'));
复制代码




6 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-1-10 16:46:16
沙发
本帖最后由 Lynn.Dou 于 2022-2-14 14:41 编辑

更新进展:
已在V15.0.2修复,请升级测试下。


--------------------------------------------

您好,
问题已复现,已将此问题记录下来做进一步调研,待有进展会在贴中更新。
本贴先做保留处理。
回复 使用道具 举报
云智装
金牌服务用户   /  发表于:2022-1-10 17:04:42
板凳
Lynn.Dou 发表于 2022-1-10 16:46
您好,
问题已复现,已将此问题记录下来,待有进展会在贴中更新。
本贴先做保留处理。

影响到了使用,我这边只能先不支持这个功能了,希望能尽快处理。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-1-10 17:30:33
地板
好的,关于本问题已做优先处理,有进展会第一时间在本贴更新。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-2-14 14:41:14
5#
更新进展:
已在V15.0.2修复,请升级测试下。
回复 使用道具 举报
云智装
金牌服务用户   /  发表于:2022-2-24 15:42:47
6#
Lynn.Dou 发表于 2022-2-14 14:41
更新进展:
已在V15.0.2修复,请升级测试下。

升级测试,这个问题倒是可以了,但是授权信息有问题,V14.2.5本地开发和线上发布都没问题,升级V15.0.2后,在本地开发提示无效授权信息,需要把LicenseKey设置空;本地测试好后发布,代码报错,我有把spreadJS版本降到了14.2.5发上去代码才没有报错。我这边不好判断是不是版本的问题,但确实降低版本后我程序能运行
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-2-24 16:19:22
7#
SJS升级V15后需要使用V15对应的授权码,您可以对接销售申请。
这边已请销售主动联系您。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部