Android 如何使用Flatter读取excel文件中的行详细信息?
我需要从外部存储器读取.xls格式的excel文件。使用文件选择器,我得到了它的路径。但现在的问题是我必须逐行读取excel文件并将其保存在数组中 我找不到任何类似于java的poi库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
预期结果应该类似于工作簿=>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});
}