当前位置:首页 > PHP

php实现导出功能实现

2026-02-15 02:48:04PHP

使用PHPExcel库导出Excel文件

安装PHPExcel库(需Composer支持)

composer require phpoffice/phpexcel

创建导出代码示例

require_once 'vendor/autoload.php';

$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0)
    ->setCellValue('A1', 'ID')
    ->setCellValue('B1', '姓名')
    ->setCellValue('C1', '邮箱');

// 填充数据示例
$data = [
    [1, '张三', 'zhangsan@example.com'],
    [2, '李四', 'lisi@example.com']
];

$row = 2;
foreach ($data as $item) {
    $objPHPExcel->getActiveSheet()
        ->setCellValue('A'.$row, $item[0])
        ->setCellValue('B'.$row, $item[1])
        ->setCellValue('C'.$row, $item[2]);
    $row++;
}

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="export_data.xlsx"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;

使用原生PHP导出CSV文件

简单CSV导出实现

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=export_data.csv');

$output = fopen('php://output', 'w');

// 写入表头
fputcsv($output, ['ID', '姓名', '邮箱']);

// 写入数据
$data = [
    [1, '张三', 'zhangsan@example.com'],
    [2, '李四', 'lisi@example.com']
];

foreach ($data as $row) {
    fputcsv($output, $row);
}

fclose($output);
exit;

使用Laravel框架的导出功能

安装Laravel Excel包

composer require maatwebsite/excel

创建导出类

namespace App\Exports;

use Maatwebsite\Excel\Concerns\FromCollection;

class UsersExport implements FromCollection
{
    public function collection()
    {
        return \App\User::all();
    }
}

控制器调用

use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;

public function export() 
{
    return Excel::download(new UsersExport, 'users.xlsx');
}

大数据量导出优化方案

分块处理大数据量

$chunkSize = 1000;
$totalRows = 100000;
$fileName = 'large_export.csv';

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename='.$fileName);

$output = fopen('php://output', 'w');
fputcsv($output, ['ID', '数据']);

for ($i = 1; $i <= $totalRows; $i += $chunkSize) {
    $chunkData = [];
    for ($j = $i; $j < min($i + $chunkSize, $totalRows); $j++) {
        $chunkData[] = [$j, '数据'.$j];
    }

    foreach ($chunkData as $row) {
        fputcsv($output, $row);
    }

    // 刷新输出缓冲
    if (ob_get_level() > 0) {
        ob_flush();
    }
    flush();
}

fclose($output);
exit;

导出功能安全注意事项

验证用户权限

if (!auth()->user()->can('export_data')) {
    abort(403, '无权执行此操作');
}

过滤输入数据

$filteredData = array_map(function($item) {
    return [
        'id' => (int) $item['id'],
        'name' => htmlspecialchars($item['name']),
        'email' => filter_var($item['email'], FILTER_SANITIZE_EMAIL)
    ];
}, $rawData);

设置内存限制

ini_set('memory_limit', '512M');
set_time_limit(0);

php实现导出功能实现

标签: 功能php
分享给朋友:

相关文章

vue实现考试多选功能

vue实现考试多选功能

Vue实现考试多选功能 数据绑定与选项渲染 使用v-model绑定用户选择的答案数组,结合v-for循环渲染选项列表。示例代码: <template> <div>…

php实现文件上传

php实现文件上传

PHP 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE…

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 // 创建…