首页 > 解决方案 > 如何在颤振中将excel表格转换为json

问题描述

如何在颤振中将excel表格转换为json。

我有一张包含学生姓名和班级的 Excel 表格,我想将其转换为 json,以便轻松运行应用程序或以其他方式将日期上传到 Firestore。

Future<String> excelToJson() async {
var file = await FilePicker.getFilePath(
    type: FileType.custom, allowedExtensions: ['xlsx', 'csv', 'xls']);
var bytes = File(file).readAsBytesSync();
var excel = Excel.decodeBytes(bytes);
int i = 0;
List<dynamic> keys = new List<dynamic>();
List<Map<String, dynamic>> json = new List<Map<String, dynamic>>();
for (var table in excel.tables.keys) {
  for (var row in excel.tables[table].rows) {
    if (i == 0) {
      keys = row;
      i++;
    } else {
      Map<String, dynamic> temp = Map<String, dynamic>();
      int j = 0;
      String tk = '';
      for (var key in keys) {
        tk = "\u201C" + key + "\u201D";
        temp[tk] = (row[j].runtimeType==String)?"\u201C" + row[j].toString() + "\u201D":row[j];
        j++;
      }
      json.add(temp);
    }
  }
}
print(json.length);
String fullJson = json.toString().substring(1, json.toString().length - 1);
return fullJson;}

我想学习如何在我的应用程序中使用这个脚本,或者其他更简单的方法

谢谢

标签: flutterdartflutter-layoutflutter-dependenciesflutter-web

解决方案


稍微更新了您的代码....

 Future<String> excelToJson() async {
        FilePickerResult result =await FilePicker.platform.pickFiles(type:FileType.custom,allowedExtensions: ['xls','xlsx','csv']);
       if (result != null) {
        File excelFile = File(result.files.single.path);}
        var bytes = File(excelFilePath).readAsBytesSync();
        var excel = Excel.decodeBytes(bytes);
        int i = 0;
        List<dynamic> keys = [];
        var jsonMap = [];
    
        for (var table in excel.tables.keys) {
          dev.log(table.toString());
          for (var row in excel.tables[table].rows) {
            dev.log(row.toString());
            if (i == 0) {
              keys = row;
              i++;
            } else {
              var temp = {};
              int j = 0;
              String tk = '';
              for (var key in keys) {
                tk = '\"${key.toString()}\"';
                temp[tk] = (row[j].runtimeType == String)
                    ?  '\"${row[j].toString()}\"'
                    : row[j];
                j++;
              }
    
              jsonMap.add(temp);
            }
          }
        }
        dev.log(
          jsonMap.length.toString(),
          name: 'excel to json',
        );
        dev.log(jsonMap.toString(), name: 'excel to json');
        String fullJson =
            jsonMap.toString().substring(1, jsonMap.toString().length - 1);
        dev.log(
          fullJson.toString(),
          name: 'excel to json',
        );
        return fullJson;
      }

推荐阅读