携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天
使用官方的excel插件,支持全终端,Android,iOS,Linux,Windows,MacOS
dependencies:
excel: ^1.1.5
直接上代码
///导出Excel
void upExcel(BuildContext context) {
var excel = Excel.createExcel();//创建Excel
var zimu = ['A', 'B', "C", 'D', 'E', 'F'];///这里是添加数据有几行对应的ABCD就有几个
Sheet sheetObject = excel['Sheet1'];///Excel 的子表名称
CellStyle cellStyle =
CellStyle(fontFamily: getFontFamily(FontFamily.Calibri));///Excel行的style,字体,颜色,北京颜色都可以设置
// cellStyle.underline = Underline.Single; // or Underline.Double
for (int i = 0; i < zimu.length; i++) {//插入Excel的代码循环插入列的数据
switch (zimu[i]) {
case 'A':
for (int i = 0; i < _dataSources.length; i++) {
var cell = sheetObject.cell(CellIndex.indexByString('A${i + 2}'));//这里为什么要写i+2呢,因为i=0;第一行是标题,我想从第二行插入所以是i+2
cell.value = i + 1; // dynamic values support provided//这里为什么是i+1因为序号从1开始
cell.cellStyle = cellStyle;
}
break;
case 'B':
for (int i = 0; i < _dataSources.length; i++) {
var cell = sheetObject.cell(CellIndex.indexByString('B${i + 2}'));
cell.value =
_dataSources[i]['id']; // dynamic values support provided;
cell.cellStyle = cellStyle;
}
break;
case 'C':
for (int i = 0; i < _dataSources.length; i++) {
var cell = sheetObject.cell(CellIndex.indexByString('C${i + 2}'));
cell.value =
_dataSources[i]['title']; // dynamic values support provided;
cell.cellStyle = cellStyle;
}
break;
case 'D':
for (int i = 0; i < _dataSources.length; i++) {
var cell = sheetObject.cell(CellIndex.indexByString('D${i + 2}'));
//自动换行 textWrapping:TextWrapping.WrapText,
CellStyle cellStyle1 = CellStyle(
backgroundColorHex: "#1AFF1A",//背景颜色单独的列
fontFamily: getFontFamily(FontFamily.Calibri),
);
cell.value = _dataSources[i]
['sub_title']; // dynamic values support provided;
cell.cellStyle = cellStyle1;
}
break;
case 'E':
for (int i = 0; i < _dataSources.length; i++) {
var cell = sheetObject.cell(CellIndex.indexByString('E${i + 2}'));
cell.value = _dataSources[i]
['create_time']; // dynamic values support provided;
cell.cellStyle = cellStyle;
}
break;
case 'F':
for (int i = 0; i < _dataSources.length; i++) {
var cell = sheetObject.cell(CellIndex.indexByString('F${i + 2}'));
cell.value = _dataSources[i]
['created_at']; // dynamic values support provided;
cell.cellStyle = cellStyle;
}
break;
}
}
//插入表头标题
List<String> dataList = [
"序号",
'id',
"标题",
"内容",
"上传时间",
"更新时间",
];
sheetObject.insertRowIterables(dataList, 0);//在第几行插入
///保存Excel
excel.encode().then((onValue) {
try {
File(join("/Users/jack/Desktop/Path_to_destination/工作日志.xlsx"))///保存Excel的路径
..createSync(recursive: true)
..writeAsBytesSync(onValue);
} catch (e) {
print(e.toString());
}
});
}
最后获取到的Excel的样式是;