34
loading...
This website collects cookies to deliver better user experience
npx create-next-app --example with-react-bootstrap nextspreadjsdemo
npm install create-next-app --global
cd nextspreadjsdemo
npm run dev
npm install @grapecity/spread-sheets-react
mkdir components && cd components
touch SpreadSheet.jsx
import React, { useState } from "react";
import { SpreadSheets, Worksheet, Column } from "@grapecity/spread-sheets-react";
import * as GC from "@grapecity/spread-sheets";
GC.Spread.Sheets.LicenseKey = window["evalKey_V14"];
export default function SpreadSheet() {
const [spreadBackColor, setSpreadBackColor] = useState('aliceblue');
const [sheetName, setSheetName] = useState('Empolyees');
const [hostStyle, setHostStyle] = useState({
width: '100%',
height: '700px'
});
const dataArr = [
{
"jobTitleName":"Developer",
"preferredFullName":"Romin Irani",
"region":"CA",
"phoneNumber":"408-1234567"
},
{
"jobTitleName":"Developer",
"preferredFullName":"Neil Irani",
"region":"CA",
"phoneNumber":"408-1111111"
},
{
"jobTitleName":"Program Directory",
"preferredFullName":"Tom Hanks",
"region":"CA",
"phoneNumber":"408-2222222"
}
];
const [data, setData] = useState(dataArr);
const [columnWidth, setColumnWidth] = useState(200);
return (
<SpreadSheets backColor={spreadBackColor} hostStyle={hostStyle}>
<Worksheet name={sheetName} dataSource={data}>
<Column dataField='preferredFullName' width={columnWidth}></Column>
<Column dataField='jobTitleName' width={columnWidth}></Column>
<Column dataField='phoneNumber' width={columnWidth}></Column>
<Column dataField='region' width={columnWidth}></Column>
</Worksheet>
</SpreadSheets>);
}
import { Container, Row, Col } from 'react-bootstrap';
import dynamic from "next/dynamic";
const SpreadSheet = dynamic(
() => {
return import("../components/SpreadSheet");
},
{ ssr: false }
);
export default function Home() {
return (
<Container>
<h1>
Adding Spreadsheets to a Jamstack Application
</h1>
<p>
Next.JS + SpreadJS demo
</p>
<Container>
<Row className="justify-content-md-between">
<Col>
<SpreadSheet />
</Col>
</Row>
</Container>
</Container>
)
}
@import "@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.css";
import SpreadSheet from "../components/SpreadSheet";
const SpreadSheet = dynamic(
() => {
return import("../components/SpreadSheet");
},
{ ssr: false }
);
const [data, setData] = useState([]);
const [columnWidth, setColumnWidth] = useState(200);
useEffect(()=>{
async function getData(){
const res = await fetch("data.json");
const data = await res.json();
setData(data.employees);
console.log(data);
}
getData();
},[]);
{
"employees": [
{
"jobTitleName": "Developer",
"preferredFullName": "Romin Irani",
"region": "CA",
"phoneNumber": "408-1234567"
},
{
"jobTitleName": "Developer",
"preferredFullName": "Neil Irani",
"region": "CA",
"phoneNumber": "408-1111111"
},
{
"jobTitleName": "Program Directory",
"preferredFullName": "Tom Hanks",
"region": "CA",
"phoneNumber": "408-2222222"
}
]
}
npm install @grapecity/spread-sheets-charts
import '@grapecity/spread-sheets-charts';
<SpreadSheets backColor={spreadBackColor} hostStyle={hostStyle} workbookInitialized={workbookInit}>
...
<Worksheet name= "Chart">
</Worksheet>
</SpreadSheets>
let dataArray = [
["", '2012', '2013', '2014', '2015', '2016', '2017'],
["Chrome", 0.3782, 0.4663, 0.4966, 0.5689, 0.6230, 0.6360],
["FireFox", 0.2284, 0.2030, 0.1801, 0.1560, 0.1531, 0.1304],
["IE", 0.3214, 0.2491, 0.2455, 0.1652, 0.1073, 0.0834],
];
const workbookInit = (spread) => {
let chartSheet = spread.getSheet(1);
chartSheet.setArray(0, 0, dataArray);
chartSheet.suspendPaint();
let chart = chartSheet.charts.add(('Chart1'), GC.Spread.Sheets.Charts.ChartType.line, 30, 85, 800, 350, "A1:H4", GC.Spread.Sheets.Charts.RowCol.rows);
spread.resumePaint();
};