搜索插件、代码仓与 APP 分类

插件详情v2.0.0

excel_to_json

一个 Flutter 包,可将 Excel (.xlsx) 文件转换为 JSON 格式,支持多个工作表,并具备全面的错误处理功能。

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
566
喜欢数
24
Pub 分数
160

安装插件

flutter pub add excel_to_json

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个 Flutter 包,可将 Excel (.xlsx) 文件转换为 JSON 格式,支持多个工作表并提供强大的错误处理功能。它可实现跨所有主要平台的电子表格数据与 Flutter 应用程序的无缝集成。该包非常适合将结构化数据从 Excel 文件导入应用程序,确保即使在复杂电子表格中也能准确解析并获得可靠结果。专为需要高效地将 Excel 转换为 JSON 而无需外部依赖的开发者设计。

适合场景

  • 将 Excel 文件中的数据导入 Flutter 应用
  • 将多工作表 Excel 文件转换为 JSON
  • 在网页和移动应用中解析结构化电子表格数据
  • 从 Excel 源自动获取数据
  • 处理大型或复杂的 Excel 文件时具备错误容错能力

主要特点

  • 支持单个 Excel 文件中的多个工作表
  • 对格式错误文件的全面错误处理
  • 跨平台兼容性(Android、iOS、Web、macOS、Windows、Linux)
  • 将 Excel 转换为 JSON 的简单 API
  • 在转换过程中保留数据类型

适合对象

  • 开发需要导入Excel数据的应用程序的开发者
  • 处理结构化电子表格数据的团队
  • 需要从Excel进行自动化数据处理的应用程序
  • 需要离线数据导入的移动和网页应用
  • 涉及从 Excel 到 JSON 的数据迁移的项目

使用建议

  • 需要有效的 .xlsx 文件才能成功转换
  • 大文件可能会影响低端设备的性能
  • 仅限 Excel (.xlsx) 格式,不包括 .xls
  • 没有内置的文件选择界面(必须与文件选择器集成)
  • 取决于底层解析库的准确性

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

Excel to JSON

pub package License: MIT pub points popularity

A Flutter package that converts Excel (.xlsx) files to JSON format, making it easy to work with spreadsheet data in your Flutter applications.

🚀 Quick Example

import 'package:excel_to_json/excel_to_json.dart';

// Simple conversion
final converter = ExcelToJson();
final jsonString = await converter.convert(); // Opens file picker

// With custom configuration  
final converter = ExcelToJson(
  config: ExcelToJsonConfig(
    includeEmptyRows: true,
    verbose: true,
  ),
);
final result = await converter.convert();

Features

✅ Simple Integration - Easy to use API with just a few lines of code
✅ Multiple Worksheets - Supports Excel files with multiple sheets
✅ Type Safety - Handles various cell types (text, numbers, dates, formulas, booleans)
✅ Configurable - Customizable conversion options
✅ Error Handling - Comprehensive error reporting and logging
✅ Cross Platform - Works on Android, iOS, Web, and Desktop

Installation

Add this to your package's pubspec.yaml file:

dependencies:
  excel_to_json: ^1.5.0

Then run:

flutter pub get

Quick Start

Basic Usage
import 'package:excel_to_json/excel_to_json.dart';

void convertExcelToJson() async {
  final converter = ExcelToJson();
  
  try {
    final jsonString = await converter.convert();
    if (jsonString != null) {
      print('Conversion successful!');
      print(jsonString);
    } else {
      print('No file selected or conversion cancelled.');
    }
  } on ExcelToJsonException catch (e) {
    print('Conversion failed: ${e.message}');
  }
}
Advanced Usage with Configuration
import 'package:excel_to_json/excel_to_json.dart';

void convertWithConfig() async {
  const config = ExcelToJsonConfig(
    includeEmptyRows: true,        // Include rows with all empty cells
    useDateTimeStrings: false,     // Keep date objects as native types
    verbose: true,                 // Enable detailed logging
  );
  
  final converter = ExcelToJson(config: config);
  
  try {
    final jsonString = await converter.convert();
    if (jsonString != null) {
      // Process your JSON data
      final data = jsonDecode(jsonString);
      
      // Access worksheets by name
      final sheet1Data = data['Sheet1'] as List<dynamic>;
      for (final row in sheet1Data) {
        print('Row data: $row');
      }
    }
  } on ExcelToJsonException catch (e) {
    print('Error: ${e.message}');
    if (e.cause != null) {
      print('Caused by: ${e.cause}');
    }
  }
}

Configuration Options

The ExcelToJsonConfig class provides several options to customize the conversion:

Option Type Default Description
includeEmptyRows bool false Include rows where all cells are empty
useDateTimeStrings bool true Convert date/time values to strings
dateFormat String? null Custom date format pattern (future feature)
verbose bool false Enable detailed logging during conversion

Output Format

The package converts Excel files to JSON with the following structure:

{
  "Sheet1": [
    {
      "Name": "John Doe",
      "Age": 30,
      "Email": "john@example.com"
    },
    {
      "Name": "Jane Smith",
      "Age": 25,
      "Email": "jane@example.com"
    }
  ],
  "Sheet2": [
    {
      "Product": "Widget",
      "Price": 19.99,
      "InStock": true
    }
  ]
}

Each worksheet becomes a top-level property, and each row (except the header) becomes an object in the array.

Supported Cell Types

The package handles all standard Excel cell types:

  • Text - String values
  • Numbers - Integer and floating-point numbers
  • Booleans - TRUE/FALSE values
  • Dates - Date values (converted to strings by default)
  • Times - Time values (converted to strings by default)
  • DateTime - Combined date and time values
  • Formulas - Formula expressions (shows the formula, not the result)
  • Empty cells - Represented as null in JSON

Error Handling

The package provides detailed error information through the ExcelToJsonException class:

try {
  final result = await converter.convert();
} on ExcelToJsonException catch (e) {
  print('Conversion failed: ${e.message}');
  
  // Check if there's an underlying cause
  if (e.cause != null) {
    print('Underlying error: ${e.cause}');
  }
}

Platform Support

This package supports all platforms where Flutter runs:

  • ✅ Android
  • ✅ iOS
  • ✅ Web
  • ✅ Windows
  • ✅ macOS
  • ✅ Linux

Limitations

  • Only supports .xlsx files (Excel 2007+ format)
  • Does not support .xls files (Excel 97-2003 format)
  • Formula results are not calculated (shows formula text instead)
  • Charts, images, and other embedded objects are ignored

Example App

Check out the /example folder for a complete Flutter app demonstrating how to use this package.

Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Setup
  1. Fork the repository
  2. Clone your fork: git clone https://github.com/yourusername/excel_to_json.git
  3. Install dependencies: flutter pub get
  4. Run tests: flutter test
  5. Make your changes and add tests
  6. Submit a pull request

Changelog

See CHANGELOG.md for a detailed list of changes.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

If you find this package helpful, please give it a ⭐ on GitHub and pub.dev!

所属分类

依赖

依赖清单 2 项

源码仓库

使用此插件的项目

暂无相关数据。