lihaiMiddleOffice/app/common/service/xlsx/StoreFinanceFlowXlsx.php
2025-03-12 11:19:42 +08:00

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;
}
}