PHPackages                             aoding9/laravel-xlswriter-export - 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. [File &amp; Storage](/categories/file-storage)
4. /
5. aoding9/laravel-xlswriter-export

ActiveLibrary[File &amp; Storage](/categories/file-storage)

aoding9/laravel-xlswriter-export
================================

laravel导出excel（基于xlswriter）

1.2.3(2y ago)184MITPHPPHP &gt;=7.1.0

Since Jun 20Pushed 1y ago1 watchersCompare

[ Source](https://github.com/aoding9/laravel-xlswriter-export)[ Packagist](https://packagist.org/packages/aoding9/laravel-xlswriter-export)[ RSS](/packages/aoding9-laravel-xlswriter-export/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (9)Used By (0)

简介
--

[](#简介)

laravel扩展：xlswriter导出

之前用了laravel-excel做数据导出，很耗内存速度也慢，数据量大的时候内存占用容易达到php上限，或者响应超时，换成xlswriter这个扩展来做。

由于直接导出的表格不太美观，经常需要进行合并单元格和自定义表格样式等操作，我对此进行了一些封装，使用更加方便直观。

导出时间和内存占用情况
-----------

[](#导出时间和内存占用情况)

以下测试使用了扩展中的Demo`Aoding9\Laravel\Xlswriter\Export\Demo\AreaExport`导出areas地区表，有4列，使用分页查询，包括了数据查询的时间。

**chunkSize=2000,导出1万条**

[![laravel扩展：xlswriter导出，自定义复杂合并及样式](https://camo.githubusercontent.com/eaa93c514fd3cf52929d126ff1996bba8ea4418b40d38a0c30532fc588a8c3cb/68747470733a2f2f63646e2e6c6561726e6b752e636f6d2f75706c6f6164732f696d616765732f3230323330362f32312f37383333382f324279726e6b674743682e706e67216c61726765)](https://camo.githubusercontent.com/eaa93c514fd3cf52929d126ff1996bba8ea4418b40d38a0c30532fc588a8c3cb/68747470733a2f2f63646e2e6c6561726e6b752e636f6d2f75706c6f6164732f696d616765732f3230323330362f32312f37383333382f324279726e6b674743682e706e67216c61726765)

**chunkSize=50000 导出50万条**

[![laravel扩展：xlswriter导出，自定义复杂合并及样式](https://camo.githubusercontent.com/bbb9f0816db7d9e8da9c95e1fd23c07adeae7bc93a8ad879a42366bcaace8a57/68747470733a2f2f63646e2e6c6561726e6b752e636f6d2f75706c6f6164732f696d616765732f3230323330362f32312f37383333382f34567434316c7a6d63362e706e67216c61726765)](https://camo.githubusercontent.com/bbb9f0816db7d9e8da9c95e1fd23c07adeae7bc93a8ad879a42366bcaace8a57/68747470733a2f2f63646e2e6c6561726e6b752e636f6d2f75706c6f6164732f696d616765732f3230323330362f32312f37383333382f34567434316c7a6d63362e706e67216c61726765)

效果示例
----

[](#效果示例)

**导出类简单示例**

[![laravel扩展：xlswriter导出，自定义复杂合并及样式](https://camo.githubusercontent.com/d315f1d31c89426986bbfde85879876383f29de82338eb4e93a26c5656401b4f/68747470733a2f2f63646e2e6c6561726e6b752e636f6d2f75706c6f6164732f696d616765732f3230323330362f32312f37383333382f4b743631506851735a642e706e67216c61726765)](https://camo.githubusercontent.com/d315f1d31c89426986bbfde85879876383f29de82338eb4e93a26c5656401b4f/68747470733a2f2f63646e2e6c6561726e6b752e636f6d2f75706c6f6164732f696d616765732f3230323330362f32312f37383333382f4b743631506851735a642e706e67216c61726765)

[![laravel扩展：xlswriter导出，自定义复杂合并及样式](https://camo.githubusercontent.com/f12ab6582c9a2b4956da0969696d7deb262c2c49c02c13ff63b7ec04cc82bd93/68747470733a2f2f63646e2e6c6561726e6b752e636f6d2f75706c6f6164732f696d616765732f3230323330362f32312f37383333382f39447a3077693432726c2e706e67216c61726765)](https://camo.githubusercontent.com/f12ab6582c9a2b4956da0969696d7deb262c2c49c02c13ff63b7ec04cc82bd93/68747470733a2f2f63646e2e6c6561726e6b752e636f6d2f75706c6f6164732f696d616765732f3230323330362f32312f37383333382f39447a3077693432726c2e706e67216c61726765)

**自定义组装数据集合（2种方法）**

[![laravel扩展：xlswriter导出，自定义复杂合并及样式](https://camo.githubusercontent.com/2d80c5a3414636775aa5d6d47668ee3f981a79723dac6dded721da3798dee1b5/68747470733a2f2f63646e2e6c6561726e6b752e636f6d2f75706c6f6164732f696d616765732f3230323330362f32312f37383333382f42616f62747756516c4c2e706e67216c61726765)](https://camo.githubusercontent.com/2d80c5a3414636775aa5d6d47668ee3f981a79723dac6dded721da3798dee1b5/68747470733a2f2f63646e2e6c6561726e6b752e636f6d2f75706c6f6164732f696d616765732f3230323330362f32312f37383333382f42616f62747756516c4c2e706e67216c61726765)

[![laravel扩展：xlswriter导出，自定义复杂合并及样式](https://camo.githubusercontent.com/4e7f6e02951ddddad4432fd1d19700ae256913328e11b273ec2a1859c5adf36b/68747470733a2f2f63646e2e6c6561726e6b752e636f6d2f75706c6f6164732f696d616765732f3230323330362f32312f37383333382f546a575935734e53664b2e706e67216c61726765)](https://camo.githubusercontent.com/4e7f6e02951ddddad4432fd1d19700ae256913328e11b273ec2a1859c5adf36b/68747470733a2f2f63646e2e6c6561726e6b752e636f6d2f75706c6f6164732f696d616765732f3230323330362f32312f37383333382f546a575935734e53664b2e706e67216c61726765)

[![laravel扩展：xlswriter导出，自定义复杂合并及样式](https://camo.githubusercontent.com/539969cf6b3ef17fb434e8388cc957212d84c4dd3046f912d7a397410fbc20d7/68747470733a2f2f63646e2e6c6561726e6b752e636f6d2f75706c6f6164732f696d616765732f3230323330362f32312f37383333382f325831383977347a53502e706e67216c61726765)](https://camo.githubusercontent.com/539969cf6b3ef17fb434e8388cc957212d84c4dd3046f912d7a397410fbc20d7/68747470733a2f2f63646e2e6c6561726e6b752e636f6d2f75706c6f6164732f696d616765732f3230323330362f32312f37383333382f325831383977347a53502e706e67216c61726765)

**复杂合并及指定单元格样式**

[![laravel扩展：xlswriter导出，自定义复杂合并及样式](https://camo.githubusercontent.com/bb9a9afc84a9c0831d84b489ba911f0670a8542393fe7f333ec539ac0cf4d1d1/68747470733a2f2f63646e2e6c6561726e6b752e636f6d2f75706c6f6164732f696d616765732f3230323330362f32362f37383333382f6e6b576c4e626b5832532e706e67216c61726765)](https://camo.githubusercontent.com/bb9a9afc84a9c0831d84b489ba911f0670a8542393fe7f333ec539ac0cf4d1d1/68747470733a2f2f63646e2e6c6561726e6b752e636f6d2f75706c6f6164732f696d616765732f3230323330362f32362f37383333382f6e6b576c4e626b5832532e706e67216c61726765)

安装
--

[](#安装)

首先根据xlswriter文档安装扩展，windows可以下载对应php版本的dll文件，linux可以源码编译安装，或者pecl安装

官方文档：

修改php.ini后，在phpinfo中确认是否安装成功，然后进行下一步

`composer require aoding9/laravel-xlswriter-export`

若国内composer镜像安装失败，请设置官方源

`composer config repo.packagist composer https://packagist.org`

官方源下载慢，国内镜像偶尔出问题可能导致安装失败，也可以把以下代码添加到composer.json，直接从github安装

如果无法访问github,可以将url改为gitee：`https://gitee.com/aoding9/laravel-xlswriter-export`

```
{
  "repositories": [
    {
      "type": "vcs",
      "url": "https://github.com/aoding9/laravel-xlswriter-export"
    }
  ]
}
```

配置
--

[](#配置)

在导出类中定义BaseExport的相关属性进行配置，或者在make之后调用相关属性的set方法

使用
--

[](#使用)

### 1.定义导出类

[](#1定义导出类)

#### 简单导出

[](#简单导出)

使用预定义的格式进行导出，最少只需定义表头和数据到列的关联，即可导出一个比较美观的表格。

以用户导出为例，首先创建一个UserExport导出类，继承`Aoding9\Laravel\Xlswriter\Export\BaseExport`基类，一般放在app\\Exports目录下

`$header`中，column是列名，按abcd顺序排列，仅作为标识不参与实际导出，列很多时方便一眼看出列名，防止写错位，觉得麻烦不写也可以，width是列宽，name是填充的表头文本。

若要合并表头，需定义最细分的列以指明每一列的宽度，合并列在另外的方法中去处理。

`/** @var \App\Models\User $row */`告诉编辑器$row可能是User模型，输入`$row->`弹出模型的属性提示，需要配合`barryvdh/laravel-ide-helper`扩展生成`_ide_helper_models.php`文件，方便开发，可用可不用

```
