参考地址先打开https://blog.csdn.net/u010324331/article/details/83658747
运行的时候会有错误,现在改一下下面的几个地方
1、orderExport首先这个首字母都改成大写,OrderExport,不改会报错的
2、OrderExport里面的collection方法随意添加上字段,拢共是12个
public function collection()
{
$data = [];
if (!empty($this->data)) {
foreach ($this->data as $key => $vo) {
// 对应的业务和数据处理,此处省略
// ...
// 对于长数字字符串导出excel会变成科学计数,请在字符串前面加上 "\t",例如:$str = "\t" . $str;
$data[] = $vo;
}
}
$headings = [
'编号',
'备注',
'备注',
'备注',
'备注',
'备注',
'备注',
'备注',
'备注',
'备注',
'备注',
'备注',
];
array_unshift($data, $headings);
$this->rowNum = count($data);
// 此处数据需要数组转集合
return collect($data);
}
3、控制器调用的时候也要把数据写上,随意的填写
public function billExportExcel()
{
$data = [
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
array(1,2,3,4,5,6,7,8,9,10,11,12),
];
// download 方法直接下载,store 方法可以保存。具体的导出类型等看官方的文档吧
return Excel::download(new OrderExport($data), 'test.xls');
}
导出来大概是这个吊样
4、然后你就可以对registerEvents()方法进行注释注释再注释
导出来就变化了
只留下这一丢丢
// 定义列宽度
$widths = ['A' => 10, 'B' => 15, 'C' => 10, 'D' => 12, 'E' => 14, 'F' => 14, 'G' => 20, 'H' => 25, 'I' => 16, 'J' => 20, 'K' => 10, 'L' => 20];
foreach ($widths as $k => $v) {
// 设置列宽度
$event->sheet->getDelegate()->getColumnDimension($k)->setWidth($v);
}
//设置行高,$i为数据行数
for ($i = 0; $i <= $this->rowNum; $i++) {
$event->sheet->getDelegate()->getRowDimension($i)->setRowHeight(25);
}
把那些花里胡哨的都去掉,就是下面的效果了,美滋滋