当前位置:首页 > 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包

php实现导出功能实现

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

大数据量导出优化方案

分块处理大数据量

php实现导出功能实现

$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
分享给朋友:

相关文章

vue实现功能

vue实现功能

Vue 实现功能的方法 Vue.js 是一个流行的前端框架,用于构建用户界面。以下是几种常见的功能实现方法: 数据绑定 Vue 提供了双向数据绑定,可以通过 v-model 指令实现表单输入和应用状…

php记住密码怎么实现

php记住密码怎么实现

使用Cookie实现记住密码功能 在PHP中,可以通过设置Cookie来记住用户的登录状态。以下是一个简单的实现方式: // 用户登录验证成功后 if ($login_success) {…

php如何实现直播

php如何实现直播

实现直播功能的方法 PHP可以通过结合其他技术和工具来实现直播功能。以下是几种常见的方法: 使用流媒体服务器 配置流媒体服务器如Nginx-RTMP、Red5或Wowza。这些服务器支持RTMP协…

php 实现接口

php 实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不包含具体的实现。类可以实现(implement)接口,并必须实现接口中定义的所有方法。 定义接口 接口通…

php实现聊天

php实现聊天

实现 PHP 聊天功能的方法 使用 WebSocket 和 PHP 实现实时聊天 WebSocket 是一种全双工通信协议,适合实现实时聊天功能。PHP 可以通过 Ratchet 库实现 WebSo…

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query =…