Sheetifye
The Native High-Performance Spreadsheet & Excel Engine for Flutter
Sheetifye is a professional-grade Flutter Excel viewer, CSV reader, and spreadsheet renderer built for speed and flexibility. It provides a native, virtualized grid capable of rendering millions of cells with ease, making it the ultimate spreadsheet UI for Flutter developers.
๐ฑ iOS |
๐ค Android |
๐ Web / Desktop |
๐ Documentation ยท ๐ก Gallery Example ยท ๐ Release Notes ยท ๐ Report Issue
๐ Feature Highlights
- โก High-Performance Virtualization: Smooth spreadsheet viewer experience with 60+ FPS, even with millions of rows and columns.
- ๐ฆ Native XLSX & CSV Support: Built-in parsers for Excel and CSV files that work locally without external dependencies or heavy WebViews.
- ๐จ Full Theming: Matches your appโs
ThemeDataautomatically or via a dedicatedSheetifyeThemeData. - ๐ฑ๏ธ Interactive Grid: Advanced selection system supporting single-cell, range selection, and keyboard navigation.
- ๐ Merged Cells: Pixel-perfect rendering of complex layouts and merged regions.
- โจ๏ธ Integrated Formula Bar: View raw cell data and computed formulas in a professional Excel-like UI.
- ๐ Cross-Platform: Optimized for touch on Mobile and mouse/keyboard on Desktop and Web.
Why Sheetifye?
Most Flutter Excel packages rely on slow WebViews or lack professional features like virtualization and cell selection. Sheetifye is a custom-built spreadsheet engine that paints directly to the Flutter canvas.
- No WebView / No PlatformView: 100% native Flutter rendering.
- Offline First: Works entirely offline with a local XLSX parser.
- Memory Efficient: Uses a specialized LRU cache for formula management and rendering.
- Developer Friendly: Drop-in widget that handles all the complexity of Excel layouts.
Supported Platforms
| Platform | Support | Rendering |
|---|---|---|
| iOS | โ | Native Canvas |
| Android | โ | Native Canvas |
| Web | โ | CanvasKit / HTML |
| Windows | โ | Native Canvas |
| macOS | โ | Native Canvas |
| Linux | โ | Native Canvas |
Installation
Add sheetifye to your pubspec.yaml:
flutter pub add sheetifye
Or manually:
dependencies:
sheetifye: ^1.0.2
Quick Start
1. Initialize State
Sheetifye uses Riverpod for high-performance state management. Wrap your app in a ProviderScope:
void main() {
runApp(const ProviderScope(child: MyApp()));
}
2. Add the Spreadsheet Viewer
import 'package:sheetifye/sheetifye.dart';
class MyExcelView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Sheetifye.asset('assets/reports/sales_2024.xlsx'),
);
}
}
Usage Examples
๐ Load from Assets
Perfect for bundling static templates or reports with your application.
Sheetifye.asset('assets/template.xlsx')
๐ Load from Network
Fetch and render remote spreadsheets directly from your API or Cloud Storage.
Sheetifye.network('https://example.com/data.xlsx')
๐พ Load from File
Ideal for apps that interact with the local device storage or downloads.
Sheetifye.file(File('/storage/emulated/0/Download/report.xlsx'))
๐ง Load from Memory
Useful when receiving bytes from a file picker or an encrypted source.
Sheetifye.memory(excelBytes)
Technical Details
๐๏ธ Architecture
Sheetifye follows a Refined Monolithic Architecture optimized for speed. The rendering pipeline uses a multi-stage process:
- Virtualization: Identifies only visible cells.
- Layout: Computes pixel-perfect positions.
- Painting: Draws directly to the Canvas in a single pass.
โก Performance
Designed for High-Performance Spreadsheet needs.
- Memory Footprint: ~45MB for a 50,000-row dataset.
- Scroll Latency: < 1ms on modern devices.
- Background Parsing: XLSX files are processed in a separate isolate to prevent UI jank.
๐ XLSX & CSV Support
Our native XLSX & CSV parser handles:
- Multi-sheet workbooks (XLSX)
- Standard CSV files
- Cell styling (bold, italic, colors)
- Column widths and row heights
- Merged cell regions
- Calculated formula results
Custom Theming
Make your Excel Grid Flutter implementation look exactly like your app.
Sheetifye.asset(
'assets/data.xlsx',
theme: SheetifyeThemeData(
primaryColor: Colors.deepPurple,
headerBackground: Colors.grey[50],
gridColor: Colors.blueGrey[100],
fontFamily: 'Inter',
),
)
Comparison Section
| Feature | Sheetifye | Syncfusion | PlutoGrid |
|---|---|---|---|
| XLSX Parsing | โ Native | ๐ก Required Add-on | โ None |
| Virtualization | โ Built-in | โ Built-in | ๐ก Partial |
| Formula Engine | โ Native AST | ๐ก Partial | โ None |
| Memory Usage | ๐ Ultra Low | ๐ด High | ๐ก Medium |
| Customization | โ High | ๐ก Config only | ๐ก Mixins |
Roadmap
xv1.0.0: Native XLSX Viewer & Virtualized Gridv1.1.0: Basic Cell Editing & In-memory Updatesv1.2.0: Live Formula Re-calculation Enginev2.0.0: Advanced Styling, Charts & Conditional Formatting
Contributing
We welcome contributions to make Sheetifye the best Flutter spreadsheet package! Check out our Contributing Guide to get started.
License
Sheetifye is released under the MIT License. See LICENSE for details.
Built with โค๏ธ by Vikas Poute
โญ Help us grow! If you find Sheetifye useful, please give it a star on GitHub. โญ