Flutter Excel文件处理插件essential_xlsx的使用

Flutter Excel文件处理插件essential_xlsx的使用

essential_xlsx 是一个用于创建Excel XLSX文件的库。以下是该库的基本用法说明。

安装依赖

在你的 pubspec.yaml 文件中添加 essential_xlsx 依赖:

dependencies:
  ...
  essential_xlsx: any
  ...

示例代码

以下是一个完整的示例,演示如何使用 essential_xlsx 插件创建一个包含数据的Excel文件。

import 'dart:io';
import 'package:essential_xlsx/essential_xlsx.dart';

// 定义要写入Excel的数据
final List<Map<String, dynamic>> data = [
  {'name': 'Isaque', 'phone': '22 2777-2339', 'age': '32'},
  {'name': 'Joe', 'phone': '22 2777-2339', 'age': '32'},
  {'name': 'Leo', 'phone': '22 2777-2339', 'age': '32'},
  {'name': 'Tiago', 'phone': '22 2777-2339', 'age': '32'},
  {'name': 'Jon', 'phone': '22 2777-2339', 'age': '32'},
];

void main(List<String> args) {
  // 确保数据不为空
  if (data.isNotEmpty) {
    // 创建一个新的SimpleXLSX实例
    final simplexlsx = SimpleXLSX();  
    simplexlsx.sheetName = 'sheet';

    // 初始化索引变量
    var idx = 0;

    // 遍历数据列表
    data.forEach((item) {
      if (idx == 0) {
        // 添加标题行
        simplexlsx.addRow(item.keys.toList());
      } else {
        // 添加数据行
        simplexlsx.addRow(item.values.map((i) => i.toString()).toList());
      }
      idx++;
    });

    // 构建XLSX文件
    final bytes = simplexlsx.build();

    // 将生成的文件保存到本地
    File('teste.xlsx').writeAsBytesSync(bytes);
  }
}

代码解释

  1. 导入依赖

    import 'dart:io';
    import 'package:essential_xlsx/essential_xlsx.dart';
    
  2. 定义数据

    final List<Map<String, dynamic>> data = [
      {'name': 'Isaque', 'phone': '22 2777-2339', 'age': '32'},
      {'name': 'Joe', 'phone': '22 2777-2339', 'age': '32'},
      {'name': 'Leo', 'phone': '22 2777-2339', 'age': '32'},
      {'name': 'Tiago', 'phone': '22 2777-2339', 'age': '32'},
      {'name': 'Jon', 'phone': '22 2777-2339', 'age': '32'},
    ];
    
  3. 初始化并设置XLSX对象

    final simplexlsx = SimpleXLSX();  
    simplexlsx.sheetName = 'sheet';
    
  4. 遍历数据并添加到XLSX文件

    var idx = 0;
    data.forEach((item) {
      if (idx == 0) {
        simplexlsx.addRow(item.keys.toList());  // 添加标题行
      } else {
        simplexlsx.addRow(item.values.map((i) => i.toString()).toList());  // 添加数据行
      }
      idx++;
    });
    
  5. 构建并保存XLSX文件

    final bytes = simplexlsx.build();
    File('teste.xlsx').writeAsBytesSync(bytes);
    

更多关于Flutter Excel文件处理插件essential_xlsx的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter Excel文件处理插件essential_xlsx的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何使用 essential_xlsx 插件在 Flutter 中处理 Excel 文件的代码示例。这个插件允许你读取和写入 Excel 文件(.xlsx 格式)。

首先,确保你已经在 pubspec.yaml 文件中添加了 essential_xlsx 依赖:

dependencies:
  flutter:
    sdk: flutter
  essential_xlsx: ^3.0.0  # 请使用最新版本

然后,运行 flutter pub get 来获取依赖。

以下是一个简单的示例,展示了如何读取和写入 Excel 文件:

读取 Excel 文件

import 'package:flutter/material.dart';
import 'package:essential_xlsx/essential_xlsx.dart';
import 'dart:io';
import 'package:path_provider/path_provider.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  List<List<String>>? data;

  @override
  void initState() {
    super.initState();
    _readExcel();
  }

  Future<void> _readExcel() async {
    final directory = await getApplicationDocumentsDirectory();
    final filePath = directory.path + '/example.xlsx';

    // 确保文件存在,这里假设你已经在设备上放置了该文件
    File file = File(filePath);
    if (await file.exists()) {
      final excel = await ExcelDecoder.decodeBytes(await file.readAsBytes());
      data = excel.tables[0].rows.map((row) => row.map((cell) => cell.text).toList()).toList();
      setState(() {});
    } else {
      print('File not found');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Excel Reader'),
        ),
        body: Center(
          child: data != null
              ? ListView.builder(
                  itemCount: data!.length,
                  itemBuilder: (context, index) {
                    return Column(
                      children: [
                        Text('Row ${index + 1}'),
                        Row(
                          children: data![index].map((cell) => Text(cell)).toList(),
                        ),
                      ],
                    );
                  },
                )
              : CircularProgressIndicator(),
        ),
      ),
    );
  }
}

写入 Excel 文件

import 'package:flutter/material.dart';
import 'package:essential_xlsx/essential_xlsx.dart';
import 'dart:io';
import 'package:path_provider/path_provider.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    _writeExcel();
  }

  Future<void> _writeExcel() async {
    final directory = await getApplicationDocumentsDirectory();
    final filePath = directory.path + '/output.xlsx';

    final data = [
      ['Name', 'Age', 'City'],
      ['Alice', '30', 'New York'],
      ['Bob', '25', 'Los Angeles'],
      ['Charlie', '35', 'Chicago'],
    ];

    final workbook = Workbook();
    final sheet = workbook.addSheet('Sheet1');

    for (int i = 0; i < data.length; i++) {
      for (int j = 0; j < data[i].length; j++) {
        sheet.setCell(i, j, TextCell(data[i][j]));
      }
    }

    final bytes = await workbook.encode();
    File file = File(filePath);
    await file.writeAsBytes(bytes);

    print('Excel file written to $filePath');
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Excel Writer'),
        ),
        body: Center(
          child: Text('Excel file has been written to the device storage.'),
        ),
      ),
    );
  }
}

注意事项

  1. 文件路径:在读取和写入 Excel 文件时,请确保文件路径正确。上面的示例使用 path_provider 插件获取应用的文档目录。
  2. 文件权限:在 Android 和 iOS 上,你可能需要申请存储权限才能访问设备存储。
  3. 错误处理:为了简化示例,错误处理被省略了。在实际应用中,应该添加适当的错误处理逻辑。

通过这些代码示例,你可以轻松地在 Flutter 应用中读取和写入 Excel 文件。

回到顶部