Download the PHP package businessg/laravel-excel without Composer

On this page you can find all versions of the php package businessg/laravel-excel. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package laravel-excel

businessg/laravel-excel

Laravel 框架的 Excel 同步/异步导入导出组件,提供开箱即用的 HTTP 接口自动注册、CLI 命令、进度追踪、消息推送、数据库日志。

Hyperf 版本请查看 businessg/hyperf-excel


目录


1. 快速开始

1.1 环境要求

依赖 版本 说明
PHP >= 8.1
Laravel 10.x / 11.x / 12.x
Redis 任意 进度存储和消息队列
MySQL 5.7+ dbLog.enabled = true 时需要

1.2 PHP 扩展

扩展 用途 安装方式
xlswriter Excel 读写核心驱动 pecl install xlswriter
redis 进度追踪和消息队列 pecl install redis
mbstring 字符串处理(通常已内置) apt install php-mbstring

验证扩展已安装:

1.3 安装

包已配置 Laravel Package Auto-Discovery,ExcelServiceProvider 自动注册,无需手动添加。

1.4 发布配置文件

生成:

1.5 数据库迁移

启用数据库日志(dbLog.enabled = true)时执行:

创建 excel_log 表。建表 SQL 如下(也可手动执行):


2. 配置参考

2.1 excel.php — 组件核心配置

2.1.1 事件监听器(listeners)

组件启动时会把"内置默认监听器 + listeners 追加配置"合并后注册到 Laravel Event。

内置默认监听器(始终启用,无需在 listeners 中重复声明):

监听器 作用 开关
BusinessG\BaseExcel\Listener\ProgressListener 进度追踪,将进度写入 Redis progress.enabled
BusinessG\BaseExcel\Listener\ExcelLogDbListener 数据库日志,写入 excel_log dbLog.enabled

listeners 语义——追加,不是覆盖:

最小示例(启用过程日志监听):

编写自定义监听器:

继承 BusinessG\BaseExcel\Listener\AbstractBaseListener,通过 listen() 返回关注的事件类名数组,process() 统一路由到同名方法(支持的事件见 BusinessG\BaseExcel\Event\*)。

2.2 excel_business.php — 业务配置

此文件注册所有业务的导入导出配置,key 即为 business_id

导出配置项说明

导入配置项说明


3. API 接口参考

启用 http.enabled = true 后自动注册。路径格式为 {prefix}/excel/{action}

prefix = 'api' 为例。

3.1 导出 — {prefix}/excel/export

项目 说明
方法 GETPOST
Content-Type application/json(POST 时)

请求参数:

参数 类型 必填 说明
business_id string excel_business.php 中注册的导出 key
param object 传递给 ExportConfig 的自定义参数

响应(异步或同步+UPLOAD):

response 在异步模式下为 null,需通过 progress 接口获取最终文件路径。 同步 + OUT 模式时直接返回文件流(浏览器下载),无 JSON 响应。

3.2 导入 — {prefix}/excel/import

项目 说明
方法 POST
Content-Type application/json

请求参数:

参数 类型 必填 说明
business_id string excel_business.php 中注册的导入 key
url string Excel 文件路径(由 upload 接口返回)

响应:

3.3 进度查询 — {prefix}/excel/progress

项目 说明
方法 GET

请求参数: token(必填)

响应:

status 状态码:

含义
1 待处理 — 任务已创建,等待执行
2 处理中 — 正在读取/写入数据
3 处理完成 — 数据处理完毕
4 处理失败 — 出现异常
5 正在输出 — 正在生成最终文件
6 完成 — 全部完成,data.response 中包含文件路径

3.4 消息查询 — {prefix}/excel/message

项目 说明
方法 GET

请求参数: token(必填)

响应:

消息为消费式,取后即删。isEnd = true 时表示全部消息已输出完毕,可停止轮询。 当 fieldNaming = 'snake' 时,字段名为 is_end

3.5 导入信息 — {prefix}/excel/info

项目 说明
方法 GET

请求参数: business_id(必填)

响应:

fieldNaming = 'snake' 时,字段名为 template_url

3.6 文件上传 — {prefix}/excel/upload

项目 说明
方法 POST
Content-Type multipart/form-data

请求参数: file(必填,.xlsx/.xls)

响应:


4. 实现一个「导出」完整流程

以"订单导出"为例。

第 1 步:启用 HTTP 路由

编辑 config/excel.php

第 2 步:创建导出配置类

新建 app/Excel/OrderExportConfig.php

第 3 步:注册到业务配置

编辑 config/excel_business.php

第 4 步:调用

通过 API 调用:

通过命令行调用:


5. 实现一个「导入」完整流程

以"订单导入"为例,包含动态导入模板的完整配置。

第 1 步:创建导入模板导出配置

动态模板是一个特殊的导出配置:同步 + 直接输出(OUT),浏览器访问即下载模板文件。

新建 app/Excel/OrderImportTemplateConfig.php

第 2 步:创建导入配置类

新建 app/Excel/OrderImportConfig.php

第 3 步:注册到业务配置

编辑 config/excel_business.php

第 4 步:调用

API 完整流程:

命令行调用:


6. 异步导入导出与队列配置

6.1 配置队列连接

确保 config/queue.php 中有可用连接(推荐 redis):

6.2 绑定组件到队列

编辑 config/excel.php

6.3 配置类中声明异步

注意:异步模式下 outPutType 必须为 UPLOAD,因为 OUT(直接输出)需要同步 HTTP 响应。

6.4 启动 Queue Worker

6.5 异步调用流程


7. 配置类字段与样式参考

所有配置类均通过数组构造(new Class(['key' => 'value'])),属性名即数组 key。

7.1 ExportConfig — 导出配置类

继承 ExportConfig 并覆盖属性或实现 getSheets() 方法。

属性 类型 默认值 说明
$serviceName string 'default' 服务名称,用于日志标识和 UI 展示
$isAsync bool false 是否异步执行。true 时任务推入队列,接口立即返回 token
$outPutType string 'out' 输出方式。可选值见下方常量
$isProgress bool true 是否启用进度追踪(写入 Redis)
$isDbLog bool true 是否写入数据库日志
$driverName string '' 驱动名称,空则使用 excel.phpdefault 配置
$params array [] 自定义参数,API 调用时通过 param 字段传入,可在 getData() 中使用
$token string '' 任务唯一标识,为空时自动生成 UUID

outPutType 常量:

常量 说明
ExportConfig::OUT_PUT_TYPE_UPLOAD 'upload' 生成文件保存到 filesystem,返回文件路径
ExportConfig::OUT_PUT_TYPE_OUT 'out' 直接输出文件流,浏览器访问即下载(不落盘)

约束isAsync = trueoutPutType 必须为 upload(异步无法直接输出流)。

必须实现的方法:

7.2 导出 Sheet

每个 Sheet 对应 Excel 中的一个工作表。

属性 类型 默认值 说明
$name string 'sheet1' 工作表名称,显示在 Excel 底部 Tab 上
$columns Column[] [] 列定义数组,决定表头和数据映射
$count int 0 数据总行数,用于进度百分比计算。设为 0 则进度条无法显示百分比
$pageSize int 2000 分页大小。引擎每次调用 data 回调获取 pageSize 条数据
$data Closure\|array [] 数据来源回调。签名:function(ExportCallbackParam $param): array。也可传二维数组
$style ?SheetStyle null Sheet 级样式配置(网格线、缩放等),详见 7.5
$options array [] 扩展选项

data 回调参数 ExportCallbackParam

属性 类型 说明
$page int 当前页码(从 1 开始)
$pageSize int 每页条数
$totalCount int 总数据量(即 Sheet.count)
$config ExportConfig 当前导出配置实例(可获取 params、token 等)
$sheet Sheet 当前 Sheet 实例
$driver DriverInterface 驱动实例

7.3 导出 Column

每个 Column 定义一列的表头标题、数据字段映射、宽度和样式。

属性 类型 默认值 说明
$title string '' 列标题,显示在 Excel 表头行
$field string '' 数据字段名,对应 getData() 返回数组中的 key
$width int 0 列宽(字符数)。0 使用 Excel 默认宽度
$height int 0 行高(像素)。通常在含说明行的首列上设置
$type string '' 数据类型(预留)
$callback mixed null 单元格值格式化回调。签名:function($value, $row): mixed
$style ?Style null 数据单元格的样式(应用于该列每一行数据)
$headerStyle ?Style null 表头单元格的样式(仅应用于该列标题行)
$children Column[] [] 子列定义,用于多行表头

多行表头示例(说明行 + 列标题行):

7.4 Style — 单元格样式

Style 可应用于 Column 的 style(数据行)或 headerStyle(表头行)。

属性 类型 默认值 说明
$bold bool false 粗体
$italic bool false 斜体
$strikeout bool false 删除线
$underline int 0 下划线样式
$wrap bool false 自动换行
$font string '' 字体名称
$fontSize float 0 字号,0 使用 Excel 默认(11)
$fontColor int 0 字体颜色,十六进制 RGB
$backgroundColor int 0 背景颜色
$backgroundStyle int 0 背景填充样式
$border int 0 边框样式
$align array [] 对齐方式数组

常用常量:

分类 常量 说明
下划线 UNDERLINE_SINGLE 1 单下划线
下划线 UNDERLINE_DOUBLE 2 双下划线
边框 BORDER_THIN 1 细线
边框 BORDER_MEDIUM 2 中等
边框 BORDER_DASHED 3 虚线
边框 BORDER_THICK 5 粗线
边框 BORDER_DOUBLE 6 双线
水平对齐 FORMAT_ALIGN_LEFT 1 左对齐
水平对齐 FORMAT_ALIGN_CENTER 2 居中
水平对齐 FORMAT_ALIGN_RIGHT 3 右对齐
垂直对齐 FORMAT_ALIGN_VERTICAL_TOP 8 顶端对齐
垂直对齐 FORMAT_ALIGN_VERTICAL_CENTER 10 垂直居中
垂直对齐 FORMAT_ALIGN_VERTICAL_BOTTOM 9 底端对齐
背景 PATTERN_SOLID 2 纯色填充

样式综合示例:

7.5 SheetStyle — Sheet 级样式

属性 类型 默认值 说明
$gridline ?int null 网格线显示模式
$zoom ?int null 缩放比例(百分比)
$hide bool false 是否隐藏此 Sheet
$isFirst bool false 是否设为首个活动 Sheet
网格线常量 说明
GRIDLINES_HIDE_ALL 0 隐藏所有
GRIDLINES_SHOW_SCREEN 1 仅屏幕显示
GRIDLINES_SHOW_PRINT 2 仅打印显示
GRIDLINES_SHOW_ALL 3 全部显示

7.6 ImportConfig — 导入配置类

继承 ImportConfig 并实现 getSheets() 方法。

属性 类型 默认值 说明
$serviceName string 'default' 服务名称
$isAsync bool false 是否异步执行
$isProgress bool true 是否启用进度追踪
$isDbLog bool true 是否写入数据库日志
$isReturnSheetData bool false 是否将 Sheet 数据作为数组返回(而非逐行回调)
$path string '' Excel 文件路径
$driverName string '' 驱动名称
$token string '' 任务唯一标识

7.7 导入 Sheet

属性 类型 默认值 说明
$name string 'sheet1' 工作表名称
$readType string 'name' Sheet 定位方式:'name''index'
$index int 0 Sheet 索引(readType='index' 时生效)
$headerIndex int 1 表头所在行号(从 1 开始)
$columns Column[] [] 列映射定义数组
$callback mixed null 逐行回调
$skipEmptyRow bool true 是否跳过空行

callback 参数 ImportRowCallbackParam

属性 类型 说明
$row array 当前行数据,key 为 Column.field 映射后的字段名
$rowIndex int 数据行索引(从 0 开始,不含表头行)
$config ImportConfig 导入配置实例
$sheet Sheet 当前 Sheet 实例
$driver DriverInterface 驱动实例

7.8 导入 Column

属性 类型 默认值 说明
$title string '' Excel 表头列标题,必须与实际文件完全一致
$field string '' 映射后的字段名
$type int TYPE_STRING 数据类型
数据类型常量 说明
Column::TYPE_STRING 0x01 字符串(默认)
Column::TYPE_INT 0x02 整数
Column::TYPE_DOUBLE 0x04 浮点数
Column::TYPE_TIMESTAMP 0x08 时间戳

8. 内置 Demo 配置

组件预置以下 Demo 配置,发布配置后即可直接使用,便于快速验证:

business_id 同步/异步 输出方式 说明
demoExport 同步 UPLOAD 100 条虚拟数据,返回文件路径
demoExportOut 同步 OUT 20 条数据,浏览器直接下载
demoAsyncExport 异步 UPLOAD 5 万条数据,带进度消息推送
demoExportForImport 同步 UPLOAD 5 条姓名/邮箱数据,供导入测试
demoImportTemplate 同步 OUT 带样式说明行的导入模板
demoImport 同步 逐行校验姓名/邮箱 + 消息推送

快速验证: 只需 http.enabled = true,即可测试:


9. 依赖组件与配置

以下 Composer 包由组件自动引入,无需手动安装。但部分包需要确认已配置

依赖包 用途 需要的配置
illuminate/filesystem 导出文件存储 确认 config/filesystems.php 中有对应的 disk
illuminate/redis 进度追踪、消息队列 确认 config/database.php 中 Redis 连接配置正确
illuminate/queue 异步导入导出 确认 config/queue.php 中有可用连接(推荐 redis)
illuminate/database 数据库日志 dbLog.enabled = true 时需要

9.1 Filesystem

导出文件默认存储到 local 磁盘。确认 config/filesystems.php 中配置:

如需存储到 OSS/S3 等云存储,安装对应 Flysystem 适配器并修改 excel.phpdrivers.xlswriter.disk

9.2 Redis

确认 config/database.php 中 Redis 配置可连接:

9.3 Queue — 异步模式需要

使用异步导入导出时,确认队列连接:


错误状态码

组件使用统一的五位数错误状态码(ExcelErrorCode 常量类),0 表示成功。

分类 码段 常量 说明
成功 - SUCCESS 0 成功
请求参数 10xxx BUSINESS_ID_REQUIRED 10001 business_id 必填
UPLOAD_FILE_INVALID 10002 上传文件无效
UPLOAD_FILE_FORMAT_UNSUPPORTED 10003 文件格式不支持(仅 xlsx/xls)
业务配置 20xxx BUSINESS_ID_NOT_FOUND 20001 业务ID不存在
PROGRESS_RECORD_NOT_FOUND 20002 进度/消息记录不存在
ASYNC_OUT_NOT_SUPPORTED 20003 异步不支持 OUT 直接输出类型
ASYNC_RETURN_SHEET_NOT_SUPPORTED 20004 异步不支持返回 sheet 数据
文件操作 30xxx FILE_PATH_NOT_EXISTS 30001 文件路径不存在
FILE_COPY_FAILED 30002 文件复制失败
FILE_DOWNLOAD_FAILED 30003 文件下载失败
TEMP_FILE_CREATE_FAILED 30004 临时文件创建失败
TEMP_DIR_CREATE_FAILED 30005 临时目录创建失败
FILE_UPLOAD_FAILED 30006 文件上传存储失败
IMPORT_FILE_NOT_EXISTS 30007 导入文件不存在
FILE_MIME_TYPE_ERROR 30008 文件 MIME 类型错误
Excel处理 40xxx OUTPUT_TYPE_ERROR 40001 输出类型错误
SHEET_NOT_EXISTS 40002 Sheet 不存在
COLUMN_HEADER_NOT_EXISTS 40003 列标题不存在
驱动/系统 50xxx DRIVER_INVALID_NAME 50001 无效驱动名称
DRIVER_CLASS_INVALID 50002 驱动类不存在或无效
DRIVER_NOT_IMPLEMENTS 50003 驱动类未实现接口
CONTAINER_RESOLVER_NOT_SET 50004 容器解析器未设置
EXCEL_INTERFACE_NOT_REGISTERED 50005 ExcelInterface 未注册

License

MIT


All versions of laravel-excel with dependencies

PHP Build Version
Package Version
Requires php Version >=8.1
ext-mbstring Version *
ext-xlswriter Version *
businessg/base-excel Version ^1.0.2
illuminate/support Version ^10.0|^11.0|^12.0
illuminate/contracts Version ^10.0|^11.0|^12.0
illuminate/filesystem Version ^10.0|^11.0|^12.0
illuminate/redis Version ^10.0|^11.0|^12.0
illuminate/queue Version ^10.0|^11.0|^12.0
illuminate/events Version ^10.0|^11.0|^12.0
illuminate/console Version ^10.0|^11.0|^12.0
illuminate/database Version ^10.0|^11.0|^12.0
overtrue/http Version ^1.2
psr/container Version ^1.0 || ^2.0
psr/event-dispatcher Version ^1.0
ramsey/uuid Version *
symfony/http-foundation Version ^6.0|^7.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package businessg/laravel-excel contains the following files

Loading the files please wait ...