Hello,
Level : Beginner
Dependencies :
Excel :Β https://pub.dev/packages/excel
Download : https://pub.dev/packages/download
I think this is self explanatory so i will not go deeper into explanation.[image.png]
import 'package:excel/excel.dart';
import 'package:path_provider/path_provider.dart';
import 'package:download/download.dart';
import 'dart:math' as math;
import 'dart:convert';
import 'dart:io';
Future exportExcel(List query) async {
var excel = Excel.createExcel();
Sheet sheetObject = excel['Commandes'];
excel.delete('Sheet1');
List dataList = [
"reference",
"field1",
"field2",
"field3",
"field4",
"field n+1",
];
sheetObject.insertRowIterables(dataList, 0);
query.asMap().forEach((index, record) => sheetObject.insertRowIterables([
record.reference.id,
record.field1.toString(),
record.field2.toString(),
record.field3.toString(),
record.field4.toString(),
record.field n+1.toString(),
], index + 1));
final filename = "Extraction des commandes " + DateTime.now().toString() + ".xlsx";
final stream = Stream.fromIterable(excel.encode());
return download(stream, filename);
}
I'm sure this can be done without manually making the constructor Header / Row. I let a real dev to optimize it.