PHPackages                             lkexcel/lkexportexcel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [PDF &amp; Document Generation](/categories/documents)
4. /
5. lkexcel/lkexportexcel

ActiveLibrary[PDF &amp; Document Generation](/categories/documents)

lkexcel/lkexportexcel
=====================

新一代PHP Excel处理库 - 高性能、低内存、易使用

v1.0.1(10mo ago)011MITPHPPHP ^8.1

Since Jun 21Pushed 10mo agoCompare

[ Source](https://github.com/longkedev/lk-export-excel)[ Packagist](https://packagist.org/packages/lkexcel/lkexportexcel)[ RSS](/packages/lkexcel-lkexportexcel/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (4)Versions (3)Used By (0)

lkExportExcel
=============

[](#lkexportexcel)

> 🚀 新一代PHP Excel处理库 - 高性能、低内存、易使用

[![PHP Version](https://camo.githubusercontent.com/04744bae0a61d2ffe29c26f07a9612eae20445fc6feaeb77b3af1f0e9be6447c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253345253344382e312d3838393242462e737667)](https://php.net/)[![License](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](LICENSE)[![Performance](https://camo.githubusercontent.com/56fe89bf87041f0b28061ab4617657962ba638a7d58f952b66e9d8312e7eafb4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706572666f726d616e63652d35782532306661737465722d677265656e2e737667)](#%E6%80%A7%E8%83%BD%E8%A1%A8%E7%8E%B0)[![Memory](https://camo.githubusercontent.com/8297eed27031195cd6baf3ad04f35d4f9e3d25545b7c876364799dae2a0635d1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d656d6f72792d2545362542352538312545352542432538462545352541342538342545372539302538362d6f72616e67652e737667)](#%E5%86%85%E5%AD%98%E4%BC%98%E5%8C%96)

✨ 核心特性
------

[](#-核心特性)

### 🚀 超高性能

[](#-超高性能)

- **极速处理**: 比PhpSpreadsheet快5倍以上
- **流式架构**: 内存使用与文件大小完全解耦
- **智能调优**: 自动检测数据量并优化处理策略
- **百万数据**: 轻松处理100万+条数据，内存使用恒定

### 💡 易用设计

[](#-易用设计)

- **链式API**: Laravel风格的优雅链式调用
- **智能检测**: 自动识别文件格式和数据类型
- **框架集成**: 深度支持Laravel、WebMan、ThinkPHP
- **丰富示例**: 13个实用示例覆盖各种场景

### 🛠️ 完整功能

[](#️-完整功能)

- **多格式支持**: CSV、XLSX读写
- **样式控制**: 字体、颜色、边框等完整样式
- **数据库集成**: 直接从数据库导入导出
- **进度显示**: 内置进度条，实时显示处理状态

📊 性能测试报告
--------

[](#-性能测试报告)

### 🏆 测试结果概览

[](#-测试结果概览)

数据量导出速度(CSV)导出速度(XLSX)导入速度(CSV)导入速度(XLSX)内存峰值状态1K条34,235条/秒29,272条/秒11,721条/秒14,605条/秒12 MB✅完美10K条45,622条/秒65,925条/秒12,975条/秒11,662条/秒63.5 MB✅优秀110K条77,079条/秒72,242条/秒113,430条/秒110,503条/秒84 MB✅优秀100万条64,289条/秒68,807条/秒140,466条/秒124,924条/秒317.3 MB✅完美### 🚀 核心亮点

[](#-核心亮点)

#### 💪 百万数据处理能力

[](#-百万数据处理能力)

- **文件大小**: 235.2 MB
- **总耗时**: 45.38秒
- **导出速度**: 64K-68K条/秒
- **导入速度**: 124K-140K条/秒
- **内存使用**: 流式处理，内存恒定
- **数据完整性**: 100%准确 (1,000,001条含表头)

#### ⚡ 智能自动调优

[](#-智能自动调优)

系统自动检测大数据处理需求，无需手动配置即可处理任意大小的文件：

```
🚀 自动调优: PHP内存限制已从 128M 提高到 512M

```

#### 🎯 真正的流式处理

[](#-真正的流式处理)

所有测试中均显示 **"流式处理，内存恒定"**，证明内存使用与数据量完全解耦：

- **处理方式与数据量无关**: 1K条和100万条数据使用相同的API
- **内存使用可预测**: 无论数据量大小，内存消耗保持稳定
- **企业级稳定性**: 100万条数据处理成功率100%

📦 安装
----

[](#-安装)

```
composer require lkexcel/lkexportexcel
```

### 系统要求

[](#系统要求)

- PHP &gt;= 8.1
- ext-xml
- ext-zip (XLSX支持，可选)

🚀 快速开始
------

[](#-快速开始)

### 基础读取

[](#基础读取)

```
use LkExcel\LkExportExcel\Api\Reader;

// 简单读取
$reader = new Reader();
$data = $reader->read('data.xlsx')->toArray();

// 链式操作
$data = $reader->read('users.csv')
    ->headers(true)                    // 包含表头
    ->limit(100)                      // 只读100行
    ->filter(fn($row) => $row['age'] > 18)  // 过滤数据
    ->toArray();

// 流式处理大文件
foreach ($reader->read('large.xlsx')->stream() as $row) {
    // 逐行处理，内存恒定
    processRow($row);
}
```

### 基础写入

[](#基础写入)

```
use LkExcel\LkExportExcel\Api\Writer;

$writer = new Writer();

// 简单写入
$writer->startWrite('output.xlsx')
    ->writeHeaders(['姓名', '年龄', '部门'])
    ->writeRows([
        ['张三', 25, '技术部'],
        ['李四', 30, '产品部'],
    ])
    ->finishWrite();

// 流式写入大量数据
$writer->startWrite('large.csv')
    ->writeHeaders(['ID', '数据', '时间']);

for ($i = 0; $i < 1000000; $i++) {
    $writer->writeRow([$i, "数据{$i}", date('Y-m-d H:i:s')]);
}

$writer->finishWrite();
```

### 数据源集成

[](#数据源集成)

```
// 从任何可迭代数据源导出
$writer = new Writer();
$writer->startWrite('users.xlsx')
    ->fromDataSource($yourDataSource)  // Generator、数组、Iterator等
    ->finishWrite();

// 支持数据映射
$writer->startWrite('mapped_data.csv')
    ->fromDataSource($dataSource, function($item) {
        return [
            'id' => $item['user_id'],
            'name' => strtoupper($item['username']),
            'email' => $item['email_address']
        ];
    })
    ->finishWrite();
```

### 格式转换

[](#格式转换)

```
use LkExcel\LkExportExcel\Api\Converter;

$converter = new Converter();

// CSV转XLSX
$converter->convert('data.csv', 'data.xlsx');

// XLSX转CSV (支持大文件)
$converter->convert('large.xlsx', 'large.csv');

// 批量转换
$converter->batchConvert([
    'file1.csv' => 'file1.xlsx',
    'file2.xlsx' => 'file2.csv'
]);
```

🔌 框架集成
------

[](#-框架集成)

### Laravel

[](#laravel)

#### 1. 安装服务提供者

[](#1-安装服务提供者)

```
// config/app.php
'providers' => [
    LkExcel\LkExportExcel\Integration\Laravel\LkExcelServiceProvider::class,
],

'aliases' => [
    'LkExcel' => LkExcel\LkExportExcel\Integration\Laravel\Facades\LkExcel::class,
],
```

#### 2. 控制器中使用

[](#2-控制器中使用)

```
use LkExcel;

class UserController extends Controller
{
    public function export()
    {
        // 从Collection导出
        $users = User::all();
        return LkExcel::download($users, 'users.xlsx');
    }

    public function import(Request $request)
    {
        // 导入Excel文件
        $data = LkExcel::import($request->file('excel'));

        // 批量插入数据库
        User::insert($data);

        return response()->json(['success' => true]);
    }

    public function largeExport()
    {
        // 大数据导出 - 自动流式处理
        return LkExcel::fromDataSource(
            $yourDataSource,
            'active_users.xlsx'
        );
    }
}
```

### WebMan

[](#webman)

#### 1. 配置安装

[](#1-配置安装)

```
// config/bootstrap.php
use LkExcel\LkExportExcel\Integration\WebMan\LkExcelPlugin;

LkExcelPlugin::install([
    'temp_dir' => runtime_path('excel_temp'),
]);
```

#### 2. 控制器使用

[](#2-控制器使用)

```
class ExportController
{
    public function export(): Response
    {
        $users = User::select();

        $response = LkExcelPlugin::downloadExcel($users, 'users.xlsx', [
            'headers' => ['ID', '姓名', '邮箱', '创建时间']
        ]);

        return new Response(
            $response['status'],
            $response['headers'],
            $response['content']
        );
    }

    public function import(Request $request): Response
    {
        $file = $request->file('excel');
        $reader = LkExcelPlugin::readFromUpload($file);
        $data = $reader->headers(true)->toArray();

        // 处理导入数据
        foreach ($data as $row) {
            User::create($row);
        }

        return json(['status' => 'success']);
    }
}
```

### ThinkPHP

[](#thinkphp)

#### 1. 服务注册

[](#1-服务注册)

```
// 在启动文件中注册
use LkExcel\LkExportExcel\Integration\ThinkPHP\LkExcelService;

LkExcelService::register();
```

#### 2. 控制器使用

[](#2-控制器使用-1)

```
class UserController extends BaseController
{
    public function export()
    {
        $users = User::select();

        // 使用助手函数
        $response = lkexcel()->download($users, 'users.xlsx', [
            'headers' => ['ID', '姓名', '邮箱'],
        ]);

        return download($response['content'], $response['filename']);
    }

    public function exportFromModel()
    {
        // 从数据源导出
        return lkexcel()->fromDataSource($yourDataSource, 'users.xlsx', [
            'headers' => ['ID', '姓名', '邮箱', '创建时间']
        ]);
    }
}
```

🎨 高级功能
------

[](#-高级功能)

### 样式设置

[](#样式设置)

```
$writer = new Writer();
$writer->startWrite('styled.xlsx')
    ->writeHeaders(['产品', '价格', '状态'])
    ->setHeaderStyle([
        'font' => ['bold' => true, 'color' => '#FFFFFF'],
        'fill' => ['color' => '#4472C4']
    ])
    ->writeRows([
        ['商品A', 100, '在售'],
        ['商品B', 200, '缺货'],
    ])
    ->setColumnStyle('B', ['numberFormat' => '¥#,##0.00'])  // 价格格式
    ->setConditionalStyle('C', [
        '在售' => ['font' => ['color' => '#008000']],
        '缺货' => ['font' => ['color' => '#FF0000']]
    ])
    ->finishWrite();
```

### 数据验证和转换

[](#数据验证和转换)

```
$reader = new Reader();
$data = $reader->read('data.xlsx')
    ->validate([
        'email' => 'email',      // 邮箱验证
        'age' => 'numeric',      // 数字验证
        'phone' => 'phone'       // 手机号验证
    ])
    ->transform([
        'date' => fn($value) => date('Y-m-d', strtotime($value)),
        'price' => fn($value) => floatval(str_replace(['¥', ','], '', $value))
    ])
    ->toArray();
```

### 进度监控

[](#进度监控)

```
use LkExcel\LkExportExcel\Performance\ProgressReporter;

$writer = new Writer();
$progress = new ProgressReporter();

$writer->setProgressCallback(function($current, $total) use ($progress) {
    $progress->update($current, $total);

    // 自定义进度处理
    echo "处理进度: " . round($current/$total*100, 2) . "%\n";
});

$writer->startWrite('large.xlsx')
    ->fromDataSource($yourDataSource)
    ->finishWrite();
```

📝 常用示例
------

[](#-常用示例)

### 复杂数据导出

[](#复杂数据导出)

```
$writer = new Writer();
$writer->startWrite('user_report.xlsx')
    ->writeHeaders(['姓名', '邮箱', '部门', '薪资'])
    ->fromDataSource($yourReportData)
    ->setColumnStyle('D', ['numberFormat' => '¥#,##0.00'])
    ->finishWrite();
```

### 错误处理

[](#错误处理)

```
try {
    $reader = new Reader();
    $data = $reader->read('data.xlsx')->toArray();
} catch (\LkExcel\LkExportExcel\Exception\FileNotFoundException $e) {
    echo "文件不存在: " . $e->getMessage();
} catch (\LkExcel\LkExportExcel\Exception\InvalidFormatException $e) {
    echo "文件格式错误: " . $e->getMessage();
} catch (\LkExcel\LkExportExcel\Exception\MemoryLimitException $e) {
    echo "内存不足: " . $e->getMessage();
}
```

🔧 配置选项
------

[](#-配置选项)

```
// 全局配置
LkExportExcel::config([
    'default_format' => 'xlsx',
    'memory_limit' => 128 * 1024 * 1024,  // 128MB
    'temp_directory' => sys_get_temp_dir(),
    'auto_detect_format' => true,
    'buffer_size' => 1000,  // 缓冲行数
]);

// 读取配置
$reader = new Reader([
    'headers' => true,
    'skip_empty_rows' => true,
    'trim_whitespace' => true,
]);

// 写入配置
$writer = new Writer([
    'auto_size_columns' => true,
    'include_bom' => false,  // CSV BOM
    'compression_level' => 6,  // XLSX压缩级别
]);
```

📚 更多示例
------

[](#-更多示例)

项目包含13个实用示例，涵盖各种使用场景：

- **基础操作**: 简单读写、格式转换
- **数据库集成**: 导入导出、大数据处理
- **性能测试**: 百万数据、内存监控
- **框架集成**: Laravel、WebMan、ThinkPHP
- **高级功能**: 样式设置、数据验证

查看 `examples/` 目录获取完整示例代码。

📄 许可证
-----

[](#-许可证)

本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。

🤝 贡献
----

[](#-贡献)

欢迎贡献代码！请先阅读 [贡献指南](CONTRIBUTING.md)。

📞 支持
----

[](#-支持)

- **文档**: [完整文档](docs/)
- **示例**: [使用示例](examples/)
- **问题**: [GitHub Issues](https://github.com/lkexcel/lkexportexcel/issues)
- **讨论**: [GitHub Discussions](https://github.com/lkexcel/lkexportexcel/discussions)

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance53

Moderate activity, may be stable

Popularity2

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

324d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/42b4c10336297fb2a800c4d48e0f8b9fef0a66093972a5617c070a8dee8ddf6d?d=identicon)[longkedev](/maintainers/longkedev)

---

Tags

phpperformanceexportexcelxlsxcsvimport

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/lkexcel-lkexportexcel/health.svg)

```
[![Health](https://phpackages.com/badges/lkexcel-lkexportexcel/health.svg)](https://phpackages.com/packages/lkexcel-lkexportexcel)
```

###  Alternatives

[maatwebsite/excel

Supercharged Excel exports and imports in Laravel

12.7k144.3M712](/packages/maatwebsite-excel)[shuchkin/simplecsv

Parse and retrieve data from CSV files. Export data to CSV.

5192.4k](/packages/shuchkin-simplecsv)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
