excel mety
This commit is contained in:
parent
bbd20719a7
commit
e1de473768
@ -102,84 +102,84 @@ void _showExcelCompatibilityError() {
|
||||
}
|
||||
|
||||
Future<void> _downloadExcelTemplate() async {
|
||||
try {
|
||||
// Créez un nouveau fichier Excel
|
||||
final excel = Excel.createExcel();
|
||||
try {
|
||||
// Créer un fichier Excel temporaire comme modèle
|
||||
final excel = Excel.createExcel();
|
||||
|
||||
// Supprimez la feuille par défaut si elle existe
|
||||
excel.delete('Sheet1');
|
||||
// // Renommer la feuille par défaut
|
||||
// excel.rename('Sheet1', 'Produits');
|
||||
|
||||
// Créez une nouvelle feuille nommée "Produits"
|
||||
final sheet = excel['Produits'];
|
||||
|
||||
// Ajoutez les en-têtes
|
||||
final headers = ['Nom', 'Prix', 'Catégorie', 'Description', 'Stock'];
|
||||
for (int i = 0; i < headers.length; i++) {
|
||||
final cell = sheet.cell(CellIndex.indexByColumnRow(columnIndex: i, rowIndex: 0));
|
||||
cell.value = headers[i];
|
||||
cell.cellStyle = CellStyle(
|
||||
bold: true,
|
||||
backgroundColorHex: '#E8F4FD',
|
||||
);
|
||||
}
|
||||
|
||||
// Ajoutez des exemples de données
|
||||
final examples = [
|
||||
['Croissant', '1.50', 'Sucré', 'Délicieux croissant beurré', '20'],
|
||||
['Sandwich jambon', '4.00', 'Salé', 'Sandwich fait maison', '15'],
|
||||
['Jus d\'orange', '2.50', 'Jus', 'Jus d\'orange frais', '30'],
|
||||
['Gâteau chocolat', '18.00', 'Gateaux', 'Gâteau au chocolat portion 8 personnes', '5'],
|
||||
];
|
||||
|
||||
for (int row = 0; row < examples.length; row++) {
|
||||
for (int col = 0; col < examples[row].length; col++) {
|
||||
final cell = sheet.cell(CellIndex.indexByColumnRow(columnIndex: col, rowIndex: row + 1));
|
||||
cell.value = examples[row][col];
|
||||
}
|
||||
}
|
||||
|
||||
// Définissez la largeur des colonnes
|
||||
sheet.setColWidth(0, 20);
|
||||
sheet.setColWidth(1, 10);
|
||||
sheet.setColWidth(2, 15);
|
||||
sheet.setColWidth(3, 30);
|
||||
sheet.setColWidth(4, 10);
|
||||
|
||||
// Sauvegardez le fichier Excel
|
||||
final bytes = excel.save();
|
||||
|
||||
if (bytes == null) {
|
||||
Get.snackbar('Erreur', 'Impossible de créer le fichier modèle');
|
||||
return;
|
||||
}
|
||||
|
||||
// Demandez à l'utilisateur où sauvegarder le fichier
|
||||
final String? outputFile = await FilePicker.platform.saveFile(
|
||||
fileName: 'modele_import_produits.xlsx',
|
||||
allowedExtensions: ['xlsx'],
|
||||
type: FileType.custom,
|
||||
);
|
||||
|
||||
if (outputFile != null) {
|
||||
try {
|
||||
// Écrivez les données dans le fichier
|
||||
await File(outputFile).writeAsBytes(bytes);
|
||||
Get.snackbar(
|
||||
'Succès',
|
||||
'Modèle téléchargé avec succès\n$outputFile',
|
||||
duration: const Duration(seconds: 4),
|
||||
backgroundColor: Colors.green,
|
||||
colorText: Colors.white,
|
||||
// Accéder à la feuille renommée
|
||||
final sheet = excel['Sheet1'];
|
||||
|
||||
// Ajouter les en-têtes avec du style
|
||||
final headers = ['Nom', 'Prix', 'Catégorie', 'Description', 'Stock'];
|
||||
for (int i = 0; i < headers.length; i++) {
|
||||
final cell = sheet.cell(CellIndex.indexByColumnRow(columnIndex: i, rowIndex: 0));
|
||||
cell.value = headers[i];
|
||||
cell.cellStyle = CellStyle(
|
||||
bold: true,
|
||||
backgroundColorHex: '#E8F4FD',
|
||||
);
|
||||
} catch (e) {
|
||||
Get.snackbar('Erreur', 'Impossible d\'écrire le fichier: $e');
|
||||
}
|
||||
|
||||
// Ajouter des exemples
|
||||
final examples = [
|
||||
['Croissant', '1.50', 'Sucré', 'Délicieux croissant beurré', '20'],
|
||||
['Sandwich jambon', '4.00', 'Salé', 'Sandwich fait maison', '15'],
|
||||
['Jus d\'orange', '2.50', 'Jus', 'Jus d\'orange frais', '30'],
|
||||
['Gâteau chocolat', '18.00', 'Gateaux', 'Gâteau au chocolat portion 8 personnes', '5'],
|
||||
];
|
||||
|
||||
for (int row = 0; row < examples.length; row++) {
|
||||
for (int col = 0; col < examples[row].length; col++) {
|
||||
final cell = sheet.cell(CellIndex.indexByColumnRow(columnIndex: col, rowIndex: row + 1));
|
||||
cell.value = examples[row][col];
|
||||
}
|
||||
}
|
||||
|
||||
// Ajuster la largeur des colonnes
|
||||
sheet.setColWidth(0, 20); // Nom
|
||||
sheet.setColWidth(1, 10); // Prix
|
||||
sheet.setColWidth(2, 15); // Catégorie
|
||||
sheet.setColWidth(3, 30); // Description
|
||||
sheet.setColWidth(4, 10); // Stock
|
||||
|
||||
// Sauvegarder en mémoire
|
||||
final bytes = excel.save();
|
||||
|
||||
if (bytes == null) {
|
||||
Get.snackbar('Erreur', 'Impossible de créer le fichier modèle');
|
||||
return;
|
||||
}
|
||||
|
||||
// Demander où sauvegarder
|
||||
final String? outputFile = await FilePicker.platform.saveFile(
|
||||
fileName: 'modele_import_produits.xlsx',
|
||||
allowedExtensions: ['xlsx'],
|
||||
type: FileType.custom,
|
||||
);
|
||||
|
||||
if (outputFile != null) {
|
||||
try {
|
||||
await File(outputFile).writeAsBytes(bytes);
|
||||
Get.snackbar(
|
||||
'Succès',
|
||||
'Modèle téléchargé avec succès\n$outputFile',
|
||||
duration: const Duration(seconds: 4),
|
||||
backgroundColor: Colors.green,
|
||||
colorText: Colors.white,
|
||||
);
|
||||
} catch (e) {
|
||||
Get.snackbar('Erreur', 'Impossible d\'écrire le fichier: $e');
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
Get.snackbar('Erreur', 'Erreur lors de la création du modèle: $e');
|
||||
debugPrint('Erreur création modèle Excel: $e');
|
||||
}
|
||||
} catch (e) {
|
||||
Get.snackbar('Erreur', 'Erreur lors de la création du modèle: $e');
|
||||
debugPrint('Erreur création modèle Excel: $e');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Future<void> _importFromExcel() async {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user