Flutter如何操作Excel文件

在Flutter项目中需要读取和编辑Excel文件,有哪些推荐的插件或方法?具体实现步骤是什么?能否提供简单的代码示例?需要注意哪些兼容性或性能问题?

2 回复

Flutter可使用第三方库操作Excel文件,如excelspreadsheet_decoder。通过它们可以读取、写入和编辑Excel文件,支持常见操作如单元格读写、格式设置等。

更多关于Flutter如何操作Excel文件的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中操作Excel文件,可以使用第三方库 excelsyncfusion_flutter_xlsio。以下是具体方法:

1. 使用 excel 库(推荐用于基本操作)

步骤:

  1. 添加依赖:在 pubspec.yaml 中添加:

    dependencies:
      excel: ^2.0.1
    

    运行 flutter pub get

  2. 代码示例

    • 创建并写入Excel
      import 'package:excel/excel.dart';
      
      void createExcel() {
        var excel = Excel.createExcel();
        Sheet sheet = excel['Sheet1'];
        
        // 写入数据
        sheet.cell(CellIndex.indexByString("A1")).value = "姓名";
        sheet.cell(CellIndex.indexByString("B1")).value = "年龄";
        sheet.cell(CellIndex.indexByString("A2")).value = "张三";
        sheet.cell(CellIndex.indexByString("B2")).value = 25;
        
        // 保存文件(需配合文件操作库,如 `path_provider` 和 `file_picker`)
        excel.save();
      }
      
    • 读取Excel
      void readExcel(String filePath) {
        var bytes = File(filePath).readAsBytesSync();
        var excel = Excel.decodeBytes(bytes);
        
        for (var table in excel.tables.keys) {
          print("表名: $table");
          excel[table].rows.forEach((row) {
            print(row.map((cell) => cell?.value).toList());
          });
        }
      }
      

2. 使用 syncfusion_flutter_xlsio 库(功能更强大,但需商业许可)

步骤:

  1. 添加依赖
    dependencies:
      syncfusion_flutter_xlsio: ^22.1.10
    
  2. 代码示例(创建Excel):
    import 'package:syncfusion_flutter_xlsio/xlsio.dart';
    
    void createExcel() async {
      final Workbook workbook = Workbook();
      final Worksheet sheet = workbook.worksheets[0];
      
      sheet.getRangeByIndex(1, 1).setText('姓名');
      sheet.getRangeByIndex(1, 2).setText('年龄');
      sheet.getRangeByIndex(2, 1).setText('李四');
      sheet.getRangeByIndex(2, 2).setNumber(30);
      
      final List<int> bytes = workbook.saveAsStream();
      workbook.dispose();
      
      // 保存文件(需使用 `path_provider` 和 `file_picker`)
      await File('path/to/file.xlsx').writeAsBytes(bytes);
    }
    

注意事项:

  • 文件存储:实际保存或读取文件需结合 path_provider(获取本地路径)和 file_picker(选择文件)。
  • 权限:在 android/app/src/main/AndroidManifest.xml 中添加存储权限(Android)。
  • 免费场景推荐 excel 库,企业级需求可考虑 syncfusion_flutter_xlsio(注意许可协议)。

以上方法可满足大多数Excel操作需求。

回到顶部