Android 如何使用Flatter读取excel文件中的行详细信息?

Android 如何使用Flatter读取excel文件中的行详细信息?,android,flutter,dart,Android,Flutter,Dart,我需要从外部存储器读取.xls格式的excel文件。使用文件选择器,我得到了它的路径。但现在的问题是我必须逐行读取excel文件并将其保存在数组中 我找不到任何类似于java的poi库 预期结果应该类似于工作簿=>sheet1=>row(i)它必须是Excel文件还是也可以将其另存为.csv数据?如果可以将其另存为.csv,则可以将其作为普通文本阅读。试试: outlined按钮( onPressed:()异步{ ByteData data=wait rootBundle.load(“asset

我需要从外部存储器读取.xls格式的excel文件。使用文件选择器,我得到了它的路径。但现在的问题是我必须逐行读取excel文件并将其保存在数组中

我找不到任何类似于java的poi库


预期结果应该类似于工作簿=>sheet1=>row(i)

它必须是Excel文件还是也可以将其另存为.csv数据?如果可以将其另存为.csv,则可以将其作为普通文本阅读。

试试:

outlined按钮(
onPressed:()异步{
ByteData data=wait rootBundle.load(“assets/mydata.xlsx”);
_上传(数据);
}
)
静态未来上传(var数据)异步{
var bytes=data.buffer.asUint8List(data.offsetInBytes,data.lengthInBytes);
var excel=excel.decodeBytes(字节);
List excelList=[];
for(excel.tables.keys中的var表)
{

对于(int rowIndex=1;rowIndex),它只是一个excel文件。
import 'dart:io';
import 'package:spreadsheet_decoder/spreadsheet_decoder.dart';

main() {
  var bytes = new File.fromUri(fullUri).readAsBytesSync();
  var decoder = new SpreadsheetDecoder.decodeBytes(bytes);
  var table = decoder.tables['Sheet1'];
  var values = table.rows[0];
  ...
  decoder.updateCell('Sheet1', 0, 0, 1337);
  new File(join(fullUri).writeAsBytesSync(decoder.encode());
  ...
}
 OutlinedButton(
              
        onPressed: ()  async {

           ByteData data = await rootBundle.load("assets/mydata.xlsx");
           
        _upload(data);
        
     }
)


static Future<void> _upload(var data) async {

 var bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);

    var excel = Excel.decodeBytes(bytes);
    
     List<dynamic> excelList = [];
     


  for (var table in excel.tables.keys) 
     {

      for(int rowIndex= 1 ;rowIndex <=excel.tables[table].maxRows; rowIndex++) 
      {
      
       Sheet sheetObject = excel['Sheet1'];
         
      var excelfileDetails = new MyExcelTable();

      excelfileDetails.name = sheetObject.cell(CellIndex.indexByColumnRow(columnIndex:0,rowIndex: rowIndex)).value.toString(); 
      excelfileDetails.age = sheetObject.cell(CellIndex.indexByColumnRow(columnIndex:1,rowIndex: rowIndex)).value; 
      excelfileDetails.state = sheetObject.cell(CellIndex.indexByColumnRow(columnIndex:2,rowIndex: rowIndex)).value.toString(); 
      excelfileDetails.country = sheetObject.cell(CellIndex.indexByColumnRow(columnIndex:3,rowIndex: rowIndex)).value.toString(); 
      excelfileDetails.occupation = sheetObject.cell(CellIndex.indexByColumnRow(columnIndex:4,rowIndex: rowIndex)).value.toString();  
     
      excelList.add(excelfileDetails);
     
     
    }
  }  
}


    class MyExcelTable
    {
         var name;

         var age;

         var state;

        var country;

        var occupation;
  

    MyExcelTable({this.name, this.age, this.state, this.country, this.occupation});

}