phpspreadsheet使用导出excel

安装

composer require phpoffice/phpspreadsheet

1、简单使用导出到服务器

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Border;

/**
     * 导出欠费明细表
     * */
    public function index(){
        $name  = date("YmdHis", time());
        $head = ['日期', '付款人数', '付款订单数', '付款金额', '付款件数'];// 表头信息
        $keys = ['time', 'order_num', 'did', 'total_price', 'good_num'];
        $count = count($head);  //计算表头数量
        $spreadsheet = new Spreadsheet();
        $sheet = $spreadsheet->getActiveSheet();

        for ($i = 65; $i < $count + 65; $i++) {     //数字转字母从65开始,循环设置表头:
            $sheet->setCellValue(strtoupper(chr($i)) . '1', $head[$i - 65]);
        }

        for($s=1;$s<=1000000;$s++){
            $spreadsheet->getActiveSheet()->setCellValue('A' . $s, $s);
        }


        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename=/www/wwwroot/swoole/erp-test-zhoao2/excel/666.xlsx"');
        header('Cache-Control: max-age=0');
        $writer = new Xlsx($spreadsheet);
        $writer->save('/www/wwwroot/swoole/erp-test-zhoao2/excel/666.xlsx');

        //删除清空:
        $spreadsheet->disconnectWorksheets();
        unset($spreadsheet);
        return 666;
    }

2、样式

1、字体
$sheet->getStyle('B1')->getFont()->setBold(true);//将B1单元格设置为粗体字
$sheet->getStyle('A7:B7')->getFont()->setBold(true)->setName('Arial')
            ->setSize(10);//将A7至B7两单元格设置为粗体字,Arial字体,10号字


2、改变字体颜色
$sheet->getStyle('A1')->getFont()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_RED);//将A1单元格文字颜色设为红色


3、设置列宽
$sheet->getColumnDimension('A')->setWidth(20);//将A列的宽度设为20(字符)
$sheet->getColumnDimension('B')->setAutoSize(true);//将B列的宽度设为自动宽度
$sheet->getDefaultColumnDimension()->setWidth(12);//设置默认列宽为12


4:设置行高(两个不能同时使用)
$sheet->getRowDimension('10')->setRowHeight(100);//将第十行的高度设为100pt
$sheet->getDefaultRowDimension()->setRowHeight(50);//设置默认行高为20

5:对齐
$sheet->getStyle('A:D')->getAlignment()
->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER) //设置垂直居中
->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER) //设置水平居中
->setWrapText(true); //设置自动换行
居中
$sheet->getStyle('A:N')->getAlignment()
            ->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER) //设置水平居中
            ->setWrapText(true); //设置自动换行
左对齐
 $sheet->getStyle('A3:A4')->getAlignment()
            ->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_LEFT) //设置左对齐
            ->setWrapText(true); //设置自动换行

6、合并单元格
$sheet->mergeCells('A1:D2');//A1到D2合并为一个单元格
1、将合并后的单元格拆分
$sheet->unmergeCells('A1:D2');//将合并后的单元格拆分。

2、使用applyFromArray实现单元格样式设置
//样式变量
$style = [
//设置字体样式
'font' => [
        'name' => 'Arial',
        'bold' => true,
        'italic' => false,
        'underline' => Font::UNDERLINE_DOUBLE,
        'strikethrough' => false,
        'color' => [
            'rgb' => '808080'
        ]
    ],
//设置边框线样式
'borders' => [
         //allBorders所有的边框线样式
         //左边框线
       'bottom' => [
           'borderStyle' => Border::BORDER_DASHDOT,
           'color' => [
              'rgb' => '808080'
            ]
       ],
         //上边框线
       'top' => [
           'borderStyle' => Border::BORDER_DASHDOT,
           'color' => [
               'rgb' => '808080'
           ]
       ]
],
//对齐样式
'alignment' => [
   'horizontal' => Alignment::HORIZONTAL_CENTER,
   'vertical' => Alignment::VERTICAL_CENTER,
   'wrapText' => true,
],
//是否使用前缀
'quotePrefix'    => true
];
$sheet->getStyle('A1:D1')->applyFromArray($style);

黑边框

$styleArray = [
            'borders' => [
                'allBorders' => [
                    'borderStyle' => Border::BORDER_THIN //黑边框
                ]
            ]
];
$sheet->getStyle('A1:N1')->applyFromArray($styleArray);

设置边框为白色

$styleArray = [
     'borders' => [
                'allBorders' => [
                    'borderStyle' => Border::BORDER_THIN, //黑边框
                    'color' => array ('argb' => 'FFFFFFFF')
                ]
     ]
];

$sheet->getStyle('A1:N1')->applyFromArray($styleArray);

背景颜色

$sheet->getStyle("C1:N1")->getFill()->setFillType(Fill::FILL_SOLID)
->getStartColor()->setARGB("FFf1e4b5");

设置工作表标题,工作簿操作

//创建工作表
$spreadsheet->createSheet();
//切换工作表$key是数字,切换到那个工作簿
$spreadsheet->setActiveSheetIndex($key);
$sheet = $spreadsheet->getActiveSheet($key);

$sheet->setTitle('Hello');//设置当前工作表标题。

设置单元格的格式

$sheet->getStyle('D2')->getNumberFormat()
            ->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_TEXT);//将D2单元格的格式设为文本格式
$sheet->getStyle('A1:D2')->getNumberFormat()
            ->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_TEXT);//将A1到D2的单元格设置为文本格式

换行

$sheet->getCell('A4')->setValue("hello\nworld");//将A4单元格的hello和world换行

超链接

//将A2单元格内容设置blog并点击跳转https://www.wj0511.com
$sheet->setCellValue('A2', 'blog');
$sheet->getCell('A2')->getHyperlink()->setUrl('https://www.wj0511.com');

边框

$styleArray = [
    'borders' => [
  		'allBorders' => [
            'borderStyle' => Border::BORDER_THIN //细边框
        ]
   	 ]
];
  
$worksheet->getStyle('A1:N1')->applyFromArray($styleArray);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用PhpSpreadsheet导出Excel文件,你可以按照以下步骤进行操作: 1. 首先,实例化一个Spreadsheet对象,例如: ```php use PhpOffice\PhpSpreadsheet\Spreadsheet; $spreadsheet = new Spreadsheet(); ``` \[1\] 2. 接下来,设置文件的扩展名和格式,以及设置相应的HTTP头信息,例如: ```php $format = 'Xlsx'; // 设置文件格式为Xlsx或Xls if ($format == 'Xlsx') { header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); } elseif ($format == 'Xls') { header('Content-Type: application/vnd.ms-excel'); } $name = 'example'; // 设置文件名 header("Content-Disposition: attachment;filename=" . $name . '.' . strtolower($format)); header('Cache-Control: max-age=0'); ``` \[2\] 3. 创建一个Writer对象,并将Spreadsheet对象保存到输出流中,例如: ```php use PhpOffice\PhpSpreadsheet\IOFactory; $objWriter = IOFactory::createWriter($spreadsheet, $format); $objWriter->save('php://output'); ``` \[2\] 这样,你就可以通过PhpSpreadsheet导出Excel文件了。记得在保存文件之后使用`exit`函数来终止脚本的执行。 如果你想导出为xls文件,可以按照以下步骤进行操作: 1. 设置相应的HTTP头信息,例如: ```php header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); ``` \[3\] 2. 设置文件名和缓存控制,例如: ```php $filename = date('Y-m-d').'工作报告单'; header('Content-Disposition: attachment;filename='.$filename .'.xls'); header('Cache-Control:max-age=0'); ``` \[3\] 3. 创建一个Writer对象,并将Spreadsheet对象保存到输出流中,例如: ```php $write = IOFactory::createWriter($spreadsheet, 'Xls'); $write->save('php://output'); ``` \[3\] 这样,你就可以使用PhpSpreadsheet导出xls文件了。记得在保存文件之后使用`exit`函数来终止脚本的执行。 #### 引用[.reference_title] - *1* *3* [php使用PhpSpreadsheet导出Excel表格详解](https://blog.csdn.net/weixin_44888397/article/details/131484139)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [PHP使用PhpSpreadsheet 导出excel文件](https://blog.csdn.net/huafengjie/article/details/130186773)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大得369

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值