为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 React 框架中使用类似Excel的电子表格工具

前文中我们已经向大家介绍了一款在Web前端实现类似Excel的电子表格工具。下面我将详细介绍它在主流前端框架React下的搭建和使用:
本文代码使用Babel JavaScript编译器将SpreadJS与React快速结合。

第1步:设置HTML5页面

首先,我们需要在页面中添加对React的引用:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>SpreadJS React Demo</title>
    <script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
</head>
</html>

在这个页面中,我们将使用Babel的预编译版本(称为babel-standalone),因此我们也会添加一个对此的引用:
<script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
最后,添加对Spread.Sheets的引用:

<script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="http://cdn.grapecity.com/spreadjs/hosted/scripts/gc.spread.sheets.all.11.0.0.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://cdn.grapecity.com/spreadjs/hosted/css/gc.spread.sheets.excel2013white.11.0.0.css">

在我们编写任何脚本之前,我们需要定义一个DIV元素来包含Spread实例。我们称之为“root”。

<div id="root"></div>
第2步:为Spread.Sheets创建一个React类

接下来,在页面中添加一个脚本元素。我们将把所有的代码放在这里:

<script type="text/babel">
</script>

然后,为Spread.Sheets定义一个React组件,以便我们可以定义一个扩展React.Component的类:

class ReactSpreadJS extends React.Component{
}

该类需要在其中定义componentDidMount和render函数。componentDidMount函数在组件被挂载后立即被调用,所以我们用它来初始化Spread实例:

componentDidMount() {
    //In the DidMount life cycle, we initialize Spread Sheet instance, and the host is defined in the Component template.
    let spread = new GC.Spread.Sheets.Workbook(this.refs.spreadJs, {sheetCount: 3});

    if(this.props.workbookInitialized){
        this.props.workbookInitialized(spread);
    }
}

接下来,在渲染函数中定义Spread.Sheets DOM元素:

render() {
    //Define the Spread.Sheets DOM template
    return(
        <div ref="spreadJs"  style={{width:'100%',height:'100%'}}>
        </div>);
}
第3步:为组件创建一个应用程序类

首先,通过App类定义应用程序React组件:

//Define the application react component.
class App extends React.Component{
}

接下来,添加一个您将调用ReactSpreadJS组件的渲染函数:

render(){
    //In the root component, it include one ReactSpreadJS component.
    return(
            <div style={{width:'800px',height:'600px'}}>
                <ReactSpreadJS workbookInitialized = {(spread)=>{console.log(spread)}}>

                </ReactSpreadJS>
            </div>
    )
}

要完成脚本,请告诉React通过使用ReactDOM.render来初始化应用程序:

ReactDOM.render(
    //Main entry, initialize application react component.
        <App/>,
    document.getElementById('root')
);

这就是使用React将Spread.Sheets添加到HTML页面所需的全部内容。这只是React和Spread.Sheets的基本使用,但可以轻松扩展。


资料扩展
SpreadJS中文网站
SpreadJS在线演示
SpreadJS学习指南

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消