57 lines
2.1 KiB
PHP
57 lines
2.1 KiB
PHP
<?php
|
|
namespace app\common\server;
|
|
|
|
use PhpOffice\PhpSpreadsheet\IOFactory;
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
|
|
/**
|
|
* 导出Excel
|
|
* Class ExportExcelServer
|
|
* @package app\common\lists
|
|
*/
|
|
class ExportGoodsExcelServer
|
|
{
|
|
public static function export($title = [], $data = [],$path,$file_name="")
|
|
{
|
|
try {
|
|
$spreadsheet = new Spreadsheet();
|
|
$sheet = $spreadsheet->getActiveSheet();
|
|
// 表头单元格内容 第一行
|
|
$titCol = 'A';
|
|
foreach ($title as $value) {
|
|
// 单元格内容写入
|
|
$sheet->setCellValue($titCol . '1', $value);
|
|
$titCol++;
|
|
}
|
|
//单元格内容居中
|
|
$sheet->getDefaultColumnDimension()->setAutoSize(true);//列宽自适应
|
|
$sheet->getStyle('A:' . $titCol)->getAlignment()->setWrapText(true);//内容容垂居中
|
|
$sheet->getStyle('A:' . $titCol)->getAlignment()->setVertical('center');//内容容垂居中
|
|
$sheet->getStyle('A:' . $titCol)->getAlignment()->setHorizontal('center');//内水平直居中
|
|
// 从第二行开始写入数据
|
|
$row = 2;
|
|
foreach ($data as &$item) {
|
|
foreach ($item as &$value) {
|
|
$dataCol = 'A';
|
|
foreach($value as &$v) {
|
|
$sheet->setCellValue($dataCol . $row, $v);
|
|
$len = strlen($v);
|
|
if ($len > 1 ){ //空数据不做处理避免影响到有数据的列宽度
|
|
$sheet->getColumnDimension($dataCol)->setAutoSize(true);
|
|
}
|
|
$dataCol++;
|
|
}
|
|
$row++;
|
|
}
|
|
}
|
|
|
|
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
|
|
if (is_file($path . $file_name)) {
|
|
file_put_contents($path . $file_name,'');;
|
|
}
|
|
$writer->save($path . $file_name);
|
|
return array('url' => trim($file_name,'.'));
|
|
}catch (\Exception $e){
|
|
}
|
|
}
|
|
} |