我正在尝试允许用户使用包含产品信息的Laravel Excel文件下载Excel。我当前的Web路由如下所示:
Route::get('/excel/release', 'ExcelController@create')->name('Create Excel');
我当前的导出如下所示:
class ProductExport implements FromQuery
{
use Exportable;
public function __construct(int $id)
{
$this->id = $id;
}
public function query()
{
return ProductList::query()->where('id', $this->id);
}
}
我当前的控制器如下所示:
public function create(Request $request) {
# Only alowed tables
$alias = [
'product_list' => ProductExport::class
];
# Ensure request has properties
if(!$request->has('alias') || !$request->has('id'))
return Redirect::back()->withErrors(['Please fill in the required fields.'])->withInput();
# Ensure they can use this
if(!in_array($request->alias, array_keys($alias)))
return Redirect::back()->withErrors(['Alias ' . $request->alias . ' is not supported'])->withInput();
# Download
return (new ProductExport((int) $request->id))->download('iezon_solutions_' . $request->alias . '_' . $request->id . '.xlsx');
}
当我转到https://example.com/excel/release?alias=product_list&id=1
时,它正确地执行并返回一个excel文件,但是没有列标题,数据如下所示:
但是,这应该包含列标题,如ID,成本等...我如何在此输出中包括列标题?
7条答案
按热度按时间mf98qq941#
根据文档,您可以将类更改为使用
WithHeadings
接口,然后定义headings
函数以返回列标题数组:这适用于所有导出类型(
FromQuery
、FromCollection
等)xzabzqsa2#
q0qdq0h23#
您可以将其与
array_keys
结合使用,以动态获取列标题:如果要将其与集合一起使用,可以按如下方式操作:
yduiuuwa4#
ztyzrc3y5#
insrf1ej6#
我正在从集合导出,我想从列名自动生成标题。下面的代码对我很有效!
如果你想手工写列名,返回一个包含列名的数组。不要忘记 * implimment*WithHeadingsInterface
谢谢@Ric的评论。
vddsk6oq7#
这个代码对我有效