我一直在使用Laravel Excel以csv格式导出数据,到目前为止效果很好。现在我需要导出为xlsx,以便在某些列中包含下拉列表。我看过this question,但它看起来像是老版本的Laravel Excel。我还看了文档中解释extending the package的页面,但我似乎不知道如何在导出数据时向列添加下拉列表。
这是我的导出类的简化版本:
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithStrictNullComparison;
class ActionItemExport implements FromCollection, WithHeadings, WithStrictNullComparison
{
public function collection()
{
return $this->getActionItems();
}
public function headings(): array
{
$columns = [
'Column 1',
'Column 2',
'Column 3',
'Column 4',
'Column 5',
'Column 6',
'Column 7'
];
return $columns;
}
private function getActionItems()
{
$select = 'column1, column2, column3, column4, column5, column6, column7';
$query = \DB::table('action_items')->select(\DB::raw($select));
$query->whereNull('action_items.deleted_at');
$ai = $query->orderBy('column1')->get();
return $ai;
}
}
字符串
我想做的是查询一个包含column 1选项的查找表,并将这些值用于列中的下拉列表,以便当用户想要更改Excel工作表时,它们仅限于下拉值。
在文档中提到使用\Maatwebsite\Excel\Sheet
或\Maatwebsite\Excel\Writer
,但我甚至不确定在哪里使用它们,或者使用哪一个。
在我的搜索过程中,我似乎无法拼凑出一个解决方案,因此任何帮助都将不胜感激。
我正在使用:
maatwebsite/excel 3.1,php 7.2,laravel 5.8
2条答案
按热度按时间wrrgggsh1#
工作表事件的实现可能会相当混乱,很难找到例子,所以当我看到这样的帖子时,我试着伸出援手。首先,我认为您应该真正了解PHPSpreadsheet documentation的这些附加特性。在这里你可以找到你需要的重要信息。然后您可以翻译您找到的内容以在Laravel Excel中使用。
PHPSpreadsheet:在单元格上设置数据验证https:phpspreadsheet.readthedocs.io/en/latest/topics/recipes/#setting-data-validation-on-a-cell
下面是一个基于现有文件的示例。我还加入了一些额外的格式来自动调整列宽--在我看来这是必须的。
字符串
vhmi4jdf2#
下面是从datalist中导出多个列的下拉列表的例子,从表和标题中提取,具有粗体和背景色等样式。
字符串