A Flutter package that converts Excel (.xlsx) files to JSON format, making it easy to work with spreadsheet data in your Flutter applications.
import 'package:excel_to_json/excel_to_json.dart';
// Simple conversion
final converter = ExcelToJson();
final jsonString = await converter.convert(); // Opens file picker
// With custom configuration
final converter = ExcelToJson(
config: ExcelToJsonConfig(
includeEmptyRows: true,
verbose: true,
),
);
final result = await converter.convert();
β
Simple Integration - Easy to use API with just a few lines of code
β
Multiple Worksheets - Supports Excel files with multiple sheets
β
Type Safety - Handles various cell types (text, numbers, dates, formulas, booleans)
β
Configurable - Customizable conversion options
β
Error Handling - Comprehensive error reporting and logging
β
Cross Platform - Works on Android, iOS, Web, and Desktop
Add this to your package's pubspec.yaml
file:
dependencies:
excel_to_json: ^1.5.0
Then run:
flutter pub get
import 'package:excel_to_json/excel_to_json.dart';
void convertExcelToJson() async {
final converter = ExcelToJson();
try {
final jsonString = await converter.convert();
if (jsonString != null) {
print('Conversion successful!');
print(jsonString);
} else {
print('No file selected or conversion cancelled.');
}
} on ExcelToJsonException catch (e) {
print('Conversion failed: ${e.message}');
}
}
import 'package:excel_to_json/excel_to_json.dart';
void convertWithConfig() async {
const config = ExcelToJsonConfig(
includeEmptyRows: true, // Include rows with all empty cells
useDateTimeStrings: false, // Keep date objects as native types
verbose: true, // Enable detailed logging
);
final converter = ExcelToJson(config: config);
try {
final jsonString = await converter.convert();
if (jsonString != null) {
// Process your JSON data
final data = jsonDecode(jsonString);
// Access worksheets by name
final sheet1Data = data['Sheet1'] as List<dynamic>;
for (final row in sheet1Data) {
print('Row data: $row');
}
}
} on ExcelToJsonException catch (e) {
print('Error: ${e.message}');
if (e.cause != null) {
print('Caused by: ${e.cause}');
}
}
}
The ExcelToJsonConfig
class provides several options to customize the conversion:
Option | Type | Default | Description |
---|---|---|---|
includeEmptyRows |
bool |
false |
Include rows where all cells are empty |
useDateTimeStrings |
bool |
true |
Convert date/time values to strings |
dateFormat |
String? |
null |
Custom date format pattern (future feature) |
verbose |
bool |
false |
Enable detailed logging during conversion |
The package converts Excel files to JSON with the following structure:
{
"Sheet1": [
{
"Name": "John Doe",
"Age": 30,
"Email": "[email protected]"
},
{
"Name": "Jane Smith",
"Age": 25,
"Email": "[email protected]"
}
],
"Sheet2": [
{
"Product": "Widget",
"Price": 19.99,
"InStock": true
}
]
}
Each worksheet becomes a top-level property, and each row (except the header) becomes an object in the array.
The package handles all standard Excel cell types:
- Text - String values
- Numbers - Integer and floating-point numbers
- Booleans - TRUE/FALSE values
- Dates - Date values (converted to strings by default)
- Times - Time values (converted to strings by default)
- DateTime - Combined date and time values
- Formulas - Formula expressions (shows the formula, not the result)
- Empty cells - Represented as
null
in JSON
The package provides detailed error information through the ExcelToJsonException
class:
try {
final result = await converter.convert();
} on ExcelToJsonException catch (e) {
print('Conversion failed: ${e.message}');
// Check if there's an underlying cause
if (e.cause != null) {
print('Underlying error: ${e.cause}');
}
}
This package supports all platforms where Flutter runs:
- β Android
- β iOS
- β Web
- β Windows
- β macOS
- β Linux
- Only supports
.xlsx
files (Excel 2007+ format) - Does not support
.xls
files (Excel 97-2003 format) - Formula results are not calculated (shows formula text instead)
- Charts, images, and other embedded objects are ignored
Check out the /example
folder for a complete Flutter app demonstrating how to use this package.
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Clone your fork:
git clone https://github.com/yourusername/excel_to_json.git
- Install dependencies:
flutter pub get
- Run tests:
flutter test
- Make your changes and add tests
- Submit a pull request
See CHANGELOG.md for a detailed list of changes.
This project is licensed under the MIT License - see the LICENSE file for details.
If you find this package helpful, please give it a β on GitHub and pub.dev!