exportToExcelWorksheet method
void
exportToExcelWorksheet(
- Worksheet worksheet, {
- List<
DataGridRow> ? rows, - bool exportStackedHeaders = true,
- bool exportTableSummaries = true,
- int defaultColumnWidth = 90,
- int defaultRowHeight = 49,
- bool exportColumnWidth = true,
- bool exportRowHeight = true,
- int startColumnIndex = 1,
- int startRowIndex = 1,
- List<
String> excludeColumns = const <String>[], - DataGridToExcelConverter? converter,
- DataGridCellExcelExportCallback? cellExport,
Exports the SfDataGrid
to the given Worksheet
.
Use the cellExport
argument as the callback, and it will be called for
each cell. You can customize the cell in an Excel sheet.
Use defaultColumnWidth
and defaultRowHeight
arguments to set the default
column width and row height in Excel while exporting.
Define the start of the row and column index in Excel sheet where DataGrid
content should be started using startRowIndex
and startColumnIndex
.
final GlobalKey<SfDataGridState> _key = GlobalKey<SfDataGridState>();
Future<void> exportDataGridToExcel() async {
final Workbook workbook = Workbook();
final Worksheet worksheet = workbook.worksheets[0];
_key.currentState!.exportToExcelWorksheet(worksheet);
final List<int> bytes = workbook.saveAsStream();
File('DataGrid.xlsx').writeAsBytes(bytes);
workbook.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text(
'Syncfusion Flutter DataGrid Export',
overflow: TextOverflow.ellipsis,
),
),
body: Column(
children: <Widget>[
Container(
margin: const EdgeInsets.all(12.0),
child: const SizedBox(
height: 40.0,
width: 150.0,
child: MaterialButton(
color: Colors.blue,
child: Center(
child: Text(
'Export to Excel',
style: TextStyle(color: Colors.white),
)),
onPressed: exportDataGridToExcel)),
),
Expanded(
child: SfDataGrid(
key: _key,
source: employeeDataSource,
columns: <GridColumn>[
GridColumn(
columnName: 'ID',
label: Container(
padding: const EdgeInsets.all(16.0),
alignment: Alignment.center,
child: const Text(
'ID',
))),
GridColumn(
columnName: 'Name',
label: Container(
padding: const EdgeInsets.all(8.0),
alignment: Alignment.center,
child: const Text('Name'))),
GridColumn(
columnName: 'Designation',
label: Container(
padding: const EdgeInsets.all(8.0),
alignment: Alignment.center,
child: const Text(
'Designation',
overflow: TextOverflow.ellipsis,
))),
GridColumn(
columnName: 'Salary',
label: Container(
padding: const EdgeInsets.all(8.0),
alignment: Alignment.center,
child: const Text('Salary'))),
],
),
),
],
),
);
}
Implementation
void exportToExcelWorksheet(Worksheet worksheet,
{List<DataGridRow>? rows,
bool exportStackedHeaders = true,
bool exportTableSummaries = true,
int defaultColumnWidth = 90,
int defaultRowHeight = 49,
bool exportColumnWidth = true,
bool exportRowHeight = true,
int startColumnIndex = 1,
int startRowIndex = 1,
List<String> excludeColumns = const <String>[],
DataGridToExcelConverter? converter,
DataGridCellExcelExportCallback? cellExport}) {
converter ??= DataGridToExcelConverter();
_initializeProperties(
converter,
cellExport: cellExport,
rowHeight: defaultRowHeight,
columnWidth: defaultColumnWidth,
excludeColumns: excludeColumns,
excelStartRowIndex: startRowIndex,
excelStartColumnIndex: startColumnIndex,
canExportRowHeight: exportRowHeight,
canExportColumnWidth: exportColumnWidth,
canExportTableSummaries: exportTableSummaries,
canExportStackedHeaders: exportStackedHeaders,
);
converter.exportToExcelWorksheet(widget, rows, worksheet);
}