当前位置:首页 > 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
分享给朋友:

相关文章

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class Tr…

php记住密码怎么实现

php记住密码怎么实现

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

h5实现点击复制功能

h5实现点击复制功能

使用document.execCommand方法(兼容旧浏览器) 通过document.execCommand('copy')实现复制功能,需先选中文本内容。创建一个隐藏的textarea或input…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…

php实现https

php实现https

PHP 实现 HTTPS 请求 在 PHP 中实现 HTTPS 请求,可以通过多种方式完成,包括使用内置函数、cURL 扩展或第三方库。以下是几种常见的方法: 使用 file_get_content…

vue怎么实现功能

vue怎么实现功能

Vue 是一个渐进式 JavaScript 框架,常用于构建用户界面。以下是一些常见的功能实现方法: 数据绑定 Vue 通过 v-model 实现双向数据绑定,适用于表单输入等场景: <te…