我正在使用excel包来查看excel文件,但很困惑如何在整个正文中显示文件,有人可以帮助我吗
var file = "HERE IS THE FILE PATH";
var bytes = File(file).readAsBytesSync();
var excel = Excel.decodeBytes(bytes);
for (var table in excel.tables.keys) {
print(table); //sheet Name
print(excel.tables[table].maxCols);
print(excel.tables[table].maxRows);
for (var row in excel.tables[table].rows) {
print("$row");
}
}
我传递文件路径,但如何在整个正文中显示它
这应该有效:
List<String> rowdetail = [];
_importFromExcel() async {
var file = "Your file path";
var bytes = File(file).readAsBytesSync();
var excel = Excel.decodeBytes(bytes);
for (var table in excel.tables.keys) {
for (var row in excel.tables[table]!.rows) {
print("row: ${row.value}");
rowdetail.add(row.value);
}
}
}
解析Excel后可以这样查看,但是如果有复杂的excel文件,则无法解析
Widget _excelViewer() {
var table = _excel.tables.keys.first;
var rows = _excel.tables[table]!.rows;
return SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: DataTable(
columns: _createColumns(rows.first),
rows: _createRows(rows),
),
);
}
List<DataColumn> _createColumns(List<dynamic> headerRow) {
return headerRow.map((cell) => DataColumn(label:
Text(cell.toString()))).toList();
}
List<DataRow> _createRows(List<List<dynamic>> rows) {
return rows.skip(1) //bacause first row is header
.map((row) => DataRow(
cells: row.map((cell) =>
DataCell(Text(cell.toString()))).toList(),
))
.toList();
}