Having trouble getting help?
Contact Support
Contact Support
Custom data source in React Gantt component
2 Feb 20238 minutes to read
The excel export provides an option to define datasource dynamically before exporting. To export data dynamically, define the dataSource
in exportProperties
.
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { ClickEventArgs } from '@syncfusion/ej2-navigations';
import { GanttComponent, Inject, Toolbar, ToolbarItem, ExcelExport, Selection } from '@syncfusion/ej2-react-gantt';
import { data } from './datasource';
function App(){
let ganttInstance;
const taskFields = {
id: 'TaskId',
name: 'TaskName',
startDate: 'StartDate',
duration: 'Duration',
progress: 'Progress',
parentID: 'parentId'
};
const toolbarOptions = ['ExcelExport', 'CsvExport'];
function toolbarClick(args) {
if (args.item.id === 'GanttExport_excelexport') {
const excelExportProperties = {
dataSource: [data[1]]
};
ganttInstance.excelExport(excelExportProperties);
}
};
return (
<GanttComponent
id='GanttExport'
dataSource={data}
taskFields={taskFields}
toolbar={toolbarOptions}
toolbarClick={toolbarClick}
allowExcelExport={true}
height='400px'
ref={gantt => ganttInstance = gantt}
treeColumnIndex={1}
>
<Inject services={[Toolbar, ExcelExport, Selection]} />
</GanttComponent>
);
};
ReactDOM.render(<App />, document.getElementById('root'));
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { ClickEventArgs } from '@syncfusion/ej2-navigations';
import { GanttComponent, Inject, Toolbar, ToolbarItem, ExcelExport, Selection } from '@syncfusion/ej2-react-gantt';
import { data } from './datasource';
function App(){
let ganttInstance: any;
const taskFields: any = {
id: 'TaskId',
name: 'TaskName',
startDate: 'StartDate',
duration: 'Duration',
progress: 'Progress',
parentID: 'parentId'
};
const toolbarOptions: ToolbarItem[] = ['ExcelExport', 'CsvExport'];
function toolbarClick(args: ClickEventArgs): void {
if (args.item.id === 'GanttExport_excelexport') {
const excelExportProperties: ExcelExportProperties = {
dataSource: [data[1]]
};
ganttInstance.excelExport(excelExportProperties);
}
};
return (
<GanttComponent
id='GanttExport'
dataSource={data}
taskFields={taskFields}
toolbar={toolbarOptions}
toolbarClick={toolbarClick}
allowExcelExport={true}
height='400px'
ref={gantt => ganttInstance = gantt}
treeColumnIndex={1}
>
<Inject services={[Toolbar, ExcelExport, Selection]} />
</GanttComponent>
);
};
ReactDOM.render(<App />, document.getElementById('root'));
<!DOCTYPE html>
<html lang="en">
<head>
<title>Syncfusion React Gantt</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Essential JS 2 for React Components" />
<meta name="author" content="Syncfusion" />
<link href="https://cdn.syncfusion.com/ej2/30.1.37/material.css" rel="stylesheet" type="text/css"/>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
<script src="systemjs.config.js"></script>
<style>
#loader {
color: #008cff;
height: 40px;
left: 45%;
position: absolute;
top: 45%;
width: 30%;
}
.e-gantt .e-gantt-chart .e-custom-holiday {
background-color:lightgreen;
}
</style>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id='root'>
<div id='loader'>Loading....</div>
</div>
</body>
</html>