refactor: 导出xlsx封装
This commit is contained in:
@@ -4,8 +4,6 @@ declare (strict_types = 1);
|
||||
namespace app\admin\controller\v1;
|
||||
|
||||
use app\admin\model\v1\ArticleLeaveMessageModel;
|
||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
|
||||
/**
|
||||
* 文章留言(评论)管理控制器
|
||||
@@ -106,40 +104,8 @@ class ArticleLeaveMessage
|
||||
// 获取导出数据
|
||||
$data = $this->getExportMessageData();
|
||||
|
||||
// 获取Spreadsheet对象
|
||||
$spreadsheet = new Spreadsheet();
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
|
||||
// 写入表头
|
||||
$title = array_values($schema);
|
||||
$title_col = 'A';
|
||||
foreach ($title as $value) {
|
||||
// 单元格内容写入
|
||||
$sheet->setCellValue($title_col . '1', $value);
|
||||
$title_col++;
|
||||
}
|
||||
|
||||
// 写入数据
|
||||
$row = 2;
|
||||
$keys = array_keys($schema);
|
||||
foreach ($data as $item) {
|
||||
$data_col = 'A';
|
||||
foreach ($keys as $key) {
|
||||
$sheet->setCellValue($data_col . $row, $item[$key]);
|
||||
$data_col++;
|
||||
}
|
||||
$row++;
|
||||
}
|
||||
|
||||
flush();
|
||||
ob_flush();
|
||||
$filename = date('YmdHms');
|
||||
header('Access-Control-Expose-Headers: Content-Disposition');
|
||||
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; Charset=UTF-8');
|
||||
header('Content-Disposition: attachment;filename=' . $filename . '.xlsx');
|
||||
header('Cache-Control: max-age=0');
|
||||
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
|
||||
$writer->save('php://output');
|
||||
// 导出
|
||||
xlsx_writer($data, $schema)->save('php://output');
|
||||
}
|
||||
private function getExportMessageData()
|
||||
{
|
||||
@@ -149,7 +115,7 @@ class ArticleLeaveMessage
|
||||
'CASE WHEN is_audited = 1 THEN "已审核" ELSE "未审核" END' => 'is_audited'
|
||||
])
|
||||
->withJoin(['article' => function($query) use($param) {
|
||||
$query->where('article.language_id', '=', $param['lang_id']);
|
||||
$query->where('article.language_id', '=', request()->lang_id);
|
||||
if (!empty($param['title'])) {
|
||||
$query->where('article.title', 'like', '%' . $param['title'] . '%');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user