字节笔记本
2026年2月22日
flutter_export_to_excel:Flutter 高性能 Excel 数据导出示例
本文介绍 flutter_export_to_excel,一个展示如何在 Flutter 应用中高效导出数据到 Excel 文件的示例项目。该项目演示了使用 `excel` 包在 3 秒内导出 10000 行数据到 Excel 文件的核心实现。
项目简介
flutter_export_to_excel 是由 Igor Dmitrov 开发的开源示例项目,展示了 Flutter 应用中数据导出到 Excel 的完整流程。该项目在 GitHub 上获得 4 stars,主要使用 Dart 语言编写,采用 MIT 许可证开源。
项目核心亮点是在 3 秒内完成 10000 行数据的 Excel 导出,性能表现优异,适合需要处理大量数据导出场景的应用参考。
核心特性
- 高性能导出: 3 秒内完成 10000 行数据导出
- 简单易用: 基于 `excel` 包,API 简洁直观
- 跨平台支持: 支持 Android、iOS、Web 等多个平台
- 完整示例: 包含完整的 UI 界面和交互逻辑
- 性能监控: 内置执行时间统计功能
技术栈
- Flutter: Google 的 UI 工具包,用于构建跨平台应用
- Dart: Flutter 的开发语言
- excel 包: Dart 生态中用于创建和操作 Excel 文件的库
核心代码解析
主要实现逻辑
```dart import 'package:excel/excel.dart'; import 'package:flutter/material.dart';
class Home extends StatefulWidget { const Home({Key? key}) : super(key: key);
@override _HomeState createState() => _HomeState(); }
class _HomeState extends State { static const int rows = 10000; Duration? executionTime;
void exportToExcel() { final stopwatch = Stopwatch()..start();
// 创建 Excel 工作簿
final excel = Excel.createExcel();
final Sheet sheet = excel[excel.getDefaultSheet()!];
// 填充 10000 行数据
for (var row = 0; row < rows; row++) {
sheet
.cell(CellIndex.indexByColumnRow(columnIndex: 0, rowIndex: row))
.value = 'FLUTTER';
sheet
.cell(CellIndex.indexByColumnRow(columnIndex: 1, rowIndex: row))
.value = 'is';
sheet
.cell(CellIndex.indexByColumnRow(columnIndex: 2, rowIndex: row))
.value = "Google's";
sheet
.cell(CellIndex.indexByColumnRow(columnIndex: 4, rowIndex: row))
.value = "UI";
sheet
.cell(CellIndex.indexByColumnRow(columnIndex: 5, rowIndex: row))
.value = "toolkit";
}
// 保存文件
excel.save(fileName: "MyData.xlsx");
setState(() {
executionTime = stopwatch.elapsed;
});}
@override Widget build(BuildContext context) { return Scaffold( body: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Center( child: Text( '$rows rows to Excel', style: TextStyle(fontSize: 40), ), ), Center( child: ElevatedButton( child: Text('Export to Excel'), onPressed: exportToExcel, ), ), if (executionTime != null) Center( child: Text(executionTime.toString()), ) ], ), ); } } ```
代码要点说明
- 创建 Excel 工作簿: 使用 `Excel.createExcel()` 创建新的工作簿
- 获取工作表: 通过 `excel[excel.getDefaultSheet()!]` 获取默认工作表
- 单元格赋值: 使用 `CellIndex.indexByColumnRow()` 定位单元格并赋值
- 保存文件: 调用 `excel.save(fileName: "MyData.xlsx")` 触发浏览器下载
- 性能统计: 使用 `Stopwatch` 测量导出执行时间
依赖配置
在 `pubspec.yaml` 中添加依赖:
```yaml dependencies: flutter: sdk: flutter excel: ^2.0.0 ```
使用场景
- 数据报表导出: 将应用中的统计数据导出为 Excel 格式
- 批量数据备份: 用户数据批量导出功能
- 报表生成: 生成可分享的 Excel 报表文件
- 数据迁移: 应用数据导出供其他系统使用
性能优化建议
- 分批处理: 对于超大数据集,考虑分批写入避免内存溢出
- 异步操作: 将导出操作放在 Isolate 中执行,避免阻塞 UI
- 进度提示: 添加进度条提升用户体验
- 文件压缩: 大文件导出后考虑压缩处理
项目链接
- GitHub 仓库: https://github.com/igdmitrov/flutter_export_to_excel
- 许可证: MIT License
- 相关标签: `excel`, `xlsx`, `flutter`, `flutter-examples`