66 lines
2.2 KiB
PHP
66 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace app\common\service\xlsx;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PhpOffice\PhpSpreadsheet\Style\Border;
|
|
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
|
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
|
|
|
class StoreFinanceFlowXlsx
|
|
{
|
|
public function export($data, $type)
|
|
{
|
|
$spreadsheet = new Spreadsheet();
|
|
$sheet = $spreadsheet->getActiveSheet();
|
|
$sheet->setCellValue('A1', '交易单号');
|
|
$sheet->setCellValue('B1', '交易时间');
|
|
$sheet->setCellValue('C1', '金额');
|
|
$sheet->setCellValue('D1', '门店');
|
|
$sheet->setCellValue('E1', '用户');
|
|
$sheet->setCellValue('F1', '流水类型');
|
|
|
|
// 设置默认的单元格样式
|
|
$defaultStyle = [
|
|
'alignment' => [
|
|
'horizontal' => Alignment::HORIZONTAL_CENTER,
|
|
'vertical' => Alignment::VERTICAL_CENTER,
|
|
],
|
|
];
|
|
// 应用默认样式到整个工作表
|
|
$spreadsheet->getDefaultStyle()->applyFromArray($defaultStyle);
|
|
|
|
$column = 2;
|
|
foreach ($data as $k => $item) {
|
|
$sheet->setCellValue("A$column", $item['order_sn']);
|
|
$sheet->setCellValue("B$column", $item['create_time']);
|
|
$sheet->setCellValue("C$column", $item['number']);
|
|
$sheet->setCellValue("D$column", $item['store_name']);
|
|
$sheet->setCellValue("E$column", $item['nickname']);
|
|
$sheet->setCellValue("F$column", $type);
|
|
$column++;
|
|
}
|
|
|
|
// 定义线框样式
|
|
$styleArray = [
|
|
'borders' => [
|
|
'allBorders' => [
|
|
'borderStyle' => Border::BORDER_THIN, // 线框样式
|
|
'color' => ['argb' => '000000'], // 线框颜色
|
|
],
|
|
],
|
|
];
|
|
$sheet->getStyle('A1:F' . $column)->applyFromArray($styleArray);
|
|
|
|
$writer = new Xlsx($spreadsheet);
|
|
$url = '/export/' . "门店财务流水 - $type " . date('YmdHi') . '.xlsx';
|
|
$file_path = public_path() . $url;
|
|
if (!is_dir(dirname($file_path))) {
|
|
mkdir(dirname($file_path), 0777, true);
|
|
}
|
|
$writer->save($file_path);
|
|
return getenv('APP_URL') . $url;
|
|
}
|
|
|
|
}
|