convertExcelToMap method

Future<Map<String, List<Map<String, dynamic>>>> convertExcelToMap(
  1. dynamic context
)

Implementation

Future<Map<String, List<Map<String, dynamic>>>> convertExcelToMap(context) async {
  try {
  // Leer el archivo Excel
  Uint8List? bytes = await fileServiceAndroid.readFile(context, 'XLSX');
  if (bytes == null) throw Exception("El mapa de bytes del archivo es nulo.");

  var excel = Excel.decodeBytes(bytes);

  Map<String, List<Map<String, dynamic>>> excelData = {};

  for (var sheet in excel.sheets.keys) {
    var sheetData = excel.sheets[sheet]!;
    if (sheetData.rows.isEmpty) continue;

    List<String> headers = sheetData.rows.first
      .map((cell) => cell?.value.toString() ?? "")
      .toList();

    List<Map<String, dynamic>> sheetList = [];

    for (var row in sheetData.rows.skip(1)) {
      Map<String, dynamic> rowData = {};
      for (int i = 0; i < headers.length; i++) {
        rowData[headers[i]] = row[i]?.value?.toString();
      }
      sheetList.add(rowData);
    }

    excelData[sheet] = sheetList;
  }

  return excelData;
  } catch (error) {
    showSnackBar(context, SnackType.error, error.toString());
    return {};
  }
}