请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

硅谷科技

金牌服务用户

4

主题

10

帖子

32

积分

金牌服务用户

积分
32
硅谷科技
金牌服务用户   /  发表于:2021-11-8 15:42  /   查看:1786  /  回复:6
1金币
如何设置所有工作簿或者某个工作簿只读?

我们希望在页面上嵌入表格,是直接在数据库存储json好还是存储成文件然后进行解析和保存更好?

最佳答案

查看完整内容

designer 的初始化方法为 designerInitialized 方法。 示例代码: 具体请参考附件demo

6 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-8 15:42:57
来自 7#
designer 的初始化方法为 designerInitialized 方法。
示例代码:
  1. class App extends React.Component {
  2.   
  3.   render() {
  4.     return (
  5.       <Designer styleInfo = {{width: "100%", height: '98vh'}}  designerInitialized={designer => this.initDesigner(designer)} spreadOptions = {{sheetCount: 2}}></Designer>
  6.     );
  7.   }

  8.   initDesigner(designer) {
  9.     console.log(designer);
  10.     var spread = designer.getWorkbook();
  11.     var sheet = spread.getActiveSheet();
  12.     sheet.setValue(0, 0, "test");
  13.     sheet.options.isProtected = true
  14.   }
  15. }

  16. export default App;
复制代码
具体请参考附件demo

react.zip

330.42 KB, 下载次数: 65

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-8 16:00:48
2#
您好,
表单保护是针对于表单设置的,
如果您想要设置整个工作簿(所有工作表)只读,
需要遍历工作表,设置每个工作表 isProtected  为true,
具体可以参考学习指南:
https://demo.grapecity.com.cn/sp ... t/protection/purejs

SpreadJS提供fromJSON、toJSON接口,支持导入导出json,
至于以何种形式保存至数据库,需要您根据自己的业务情况调研决定,这边难以给出适合您的建议。
回复 使用道具 举报
硅谷科技
金牌服务用户   /  发表于:2021-11-12 14:27:15
3#
Lynn.Dou 发表于 2021-11-8 16:00
您好,
表单保护是针对于表单设置的,
如果您想要设置整个工作簿(所有工作表)只读,

react中使用designer可以设置只读吗?设置了isProtected为true之后还是可以编辑.
我们希望在只读时隐藏designer的所有菜单,支持这个功能吗
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-12 15:23:30
4#
问题1:
“设置了isProtected为true之后还是可以编辑.”
请检查下该sheet是否成功设置表单保护。
(true表示已设置表单保护)
image.png921054992.png
如果设置成功,检查下依然可以编辑的单元格 locked 是否为true。
(true表示已锁定)
image.png899604186.png
二者均为true时,才表示该单元格只读(不可编辑)

问题2:
“隐藏designer的所有菜单”
指的是隐藏designer上方的工具栏吗?
designer没有提供接口可以设置隐藏,可以试下通过操作css设置:
document.getElementsByClassName("gc-ribbon-bar")[0].style.display = "none"

事实上,在设置表单保护时,工具栏以及右键菜单的一些选项已经置灰(不可操作),
其中的设计也是与Excel保持一致的。
回复 使用道具 举报
硅谷科技
金牌服务用户   /  发表于:2021-11-12 16:04:56
5#
  1. import React, { useMemo, useEffect, useState } from 'react';
  2. import '@grapecity/spread-sheets-pivot-addon';
  3. import '@grapecity/spread-sheets-designer-resources-cn';
  4. import '@grapecity/spread-sheets-designer';
  5. import { Designer } from '@grapecity/spread-sheets-designer-react';
  6. import style from './style.less';
  7. import { CSSProperties } from 'react';

  8. interface Props {
  9.   onSave?: (json: string, blob: Blob) => any;
  10.   beforeUpload?: () => void;
  11.   afterUpload?: () => void;
  12.   data?: string;
  13.   type: 'json' | 'blob';
  14.   styleInfo?: CSSProperties;
  15.   disabled: boolean;
  16. }
  17. export default function SpreadComponent(props: Props) {
  18.   function init(spread) {
  19.     debugger;
  20.   }

  21.   return (
  22.     <div className={style['spreadjs']}>
  23.       <Designer workbookInitialized={spread => init(spread)}></Designer>
  24.     </div>
  25.   );
  26. }
复制代码
回复 使用道具 举报
硅谷科技
金牌服务用户   /  发表于:2021-11-12 16:05:15
6#

就这个,init方法不会执行的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部