字
字节笔记本
2026年2月22日
flutter_export_to_excel:Flutter 高性能 Excel 导出示例
本文介绍 flutter_export_to_excel,一个 Flutter Excel 导出示例项目。该项目展示了如何在 3 秒内将 10000 行数据导出到 Excel 文件,使用 excel 包实现高性能数据导出功能。
项目简介
flutter_export_to_excel 是一个开源的 Flutter 示例项目,由 Igor Dmitrov 开发。该项目演示了如何使用 excel 包在 Flutter 应用中高效导出大量数据到 Excel 文件。截至目前,该项目在 GitHub 上获得 4 stars,主要使用 Dart 语言编写。
核心特性
- 高性能导出:3 秒内导出 10000 行数据到 Excel
- 简单易用:简洁的 API 设计,易于集成到现有项目
- 跨平台支持:支持 Android、iOS 和 Web 平台
- 性能监控:内置执行时间统计功能
技术栈
- Flutter - 跨平台 UI 框架
- excel - Dart Excel 操作库
- Dart - 编程语言
核心代码解析
以下是 home.dart 文件的核心实现:
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<Home> {
static const int rows = 10000;
Duration? executionTime;
void exportToExcel() {
final stopwatch = Stopwatch()..start();
final excel = Excel.createExcel();
final Sheet sheet = excel[excel.getDefaultSheet()!];
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()),
)
],
),
);
}
}代码说明
1. 数据写入
使用 CellIndex.indexByColumnRow() 方法定位单元格,通过循环批量写入数据:
dart
for (var row = 0; row < rows; row++) {
sheet
.cell(CellIndex.indexByColumnRow(columnIndex: 0, rowIndex: row))
.value = '数据';
}2. 性能统计
使用 Stopwatch 测量导出执行时间:
dart
final stopwatch = Stopwatch()..start();
// ... 导出逻辑
executionTime = stopwatch.elapsed;3. 文件保存
调用 excel.save() 方法保存文件:
dart
excel.save(fileName: "MyData.xlsx");依赖配置
在 pubspec.yaml 中添加依赖:
yaml
dependencies:
flutter:
sdk: flutter
excel: ^2.0.0使用场景
- 数据报表导出
- 批量数据备份
- 财务数据导出
- 统计分析报告
项目链接
- GitHub 仓库:https://github.com/igdmitrov/flutter_export_to_excel
- 许可证:MIT License
分享: