sheet_mapper_generator 1.0.0
sheet_mapper_generator: ^1.0.0 copied to clipboard
Code generator for sheet_mapper package. Generates mapping code for @SheetTable annotated classes.
sheet_mapper_generator #
Code generator for the sheet_mapper package. Generates type-safe mapping code for parsing Excel, CSV, TSV, and PSV files into Dart objects.
Author #
Abdul Waseem Nihaal
- Email: waseemnihaal20@gmail.com
- GitHub: https://github.com/waseemnihaal20-a11y
Installation #
Add both packages to your pubspec.yaml:
dependencies:
sheet_mapper: ^1.0.0
dev_dependencies:
build_runner: ^2.4.0
sheet_mapper_generator: ^1.0.0
Usage #
1. Define Your Model #
import 'package:sheet_mapper/sheet_mapper.dart';
part 'user.g.dart';
@SheetTable()
class User with _$UserSheetMapper {
@SheetColumn('Full Name', required: true)
final String name;
@SheetColumn('Email', required: true)
final String email;
@SheetColumn('Age', defaultValue: '0')
final int age;
User({
required this.name,
required this.email,
required this.age,
});
}
2. Generate Code #
dart run build_runner build --delete-conflicting-outputs
3. Use the Generated Mapper #
// Parse from rows
final users = _$UserSheetMapper.fromSheet(rows);
// Or use with SheetMapperWidget from sheet_mapper package
SheetMapperWidget<User>(
onResult: (users) => print('Parsed ${users.length} users'),
onError: (error) => print('Error: $error'),
)
Annotations #
@SheetTable #
Mark a class as mappable from a spreadsheet:
@SheetTable(
sheetName: 'Users', // Excel sheet name (optional)
sheetIndex: 0, // Sheet index (default: 0)
hasHeader: true, // First row is header (default: true)
startRow: 0, // Skip rows (optional)
)
class User with _$UserSheetMapper { ... }
@SheetColumn #
Map a field to a spreadsheet column:
@SheetColumn(
'Column Name', // Header name
defaultValue: '0', // Default if empty (optional)
dateFormat: 'yyyy-MM-dd',// Date format (optional)
required: false, // Throw error if missing (default: false)
trim: true, // Trim whitespace (default: true)
)
final String fieldName;
Supported Types #
| Type | Description | Notes |
|---|---|---|
String |
Direct text | Default: "-" if empty |
int |
Integer numbers | Nullable by default |
double |
Decimal numbers | Nullable by default |
bool |
Boolean | Accepts: true/false, 1/0, yes/no |
DateTime |
Date/time | ISO8601 or custom format |
All types support nullable versions (String?, int?, etc.).
Related Packages #
- sheet_mapper - The main package with annotations, parsers, and drag-drop UI widget
License #
This project is licensed under the MIT License - see the LICENSE file for details.