tinymeng/spreadsheet
Composer 安装命令:
composer require tinymeng/spreadsheet
包简介
php-spreadsheet Excel快速使用
README 文档
README
欢迎 Star,欢迎 PR!
大家如果有问题要交流,就发在这里吧: Spreadsheet 交流 或发邮件 666@majiameng.com
PHP Spreadsheet Class
基于 phpoffice/phpspreadsheet 扩展快速封装使用,避免我们再重复性的造轮子
您可以在网站上找到tinymeng/spreadsheet文档。查看“入门”页面以获取快速概述。
Installation
composer require tinymeng/spreadsheet -vvv
类库使用的命名空间为
\\tinymeng\\spreadsheet
目录结构
.
├── config 配置文件目录
│ └── TSpreadSheet.php
├── example 事例代码
│ ├── export.php 导出事例代码
│ └── import.php 导入事例代码
├── src 代码源文件目录
│ ├── Connector
│ │ ├── Gateway.php 必须继承的抽象类
│ │ └── GatewayInterface.php 必须实现的接口
│ ├── Gateways
│ │ ├── Export.php 导出实例
│ │ └── Import.php 导入实例
│ ├── Util
│ │ └── TConfig.php 配置类
│ └── TSpreadSheet.php 抽象实例类
├── composer.json Composer File
├── LICENSE MIT License
├── README_zh_cn.md 中文文档
└── README.md Documentation
Configuration
- 2.1 excel导出 TSpreadSheet::export()
- 2.2 excel导入 TSpreadSheet::import()
2.1.excel导出
example 事例目录
<?php use tinymeng\spreadsheet\TSpreadSheet; require __DIR__.'/vendor/autoload.php'; /** * excel生成文件名 */ $filename = $sheetName = "export_demo"; /** * excel表头 */ $title = [ '序号'=>'_id', 'ID'=>'id', '订单编号'=>'order_sn', '用户id'=>'user_id', '结算日期'=>'day', '下单时间'=>'create_time', '图片'=>'image', ]; /** * excel数据数组(二维) */ $data = [ [ 'id'=>'1', 'order_sn'=>'20180101465464', 'user_id'=>'1000', 'day'=>'20220101', 'create_time'=>'1687140376', 'image'=>[ 'type'=>'image', 'content'=>'https://sns.bjwmsc.com/wp-content/themes/zibll/img/logo.png',//网络图片确保存在 'height'=>100, // 'width'=>100,//只设置高,宽会自适应,如果设置宽后,高则失效 ], ],[ 'id'=>'2', 'order_sn'=>'20190101465464', 'user_id'=>'1000', 'day'=>'20220101', 'create_time'=>'1687140376', 'image'=>[ 'type'=>'image', 'content'=>'./text.png',//本地图片确保存在 'height'=>100, ], ],[ 'id'=>'3', 'order_sn'=>'20200101465464', 'user_id'=>'1000', 'day'=>'20220101', 'create_time'=>'1687140376', ],[ 'id'=>'4', 'order_sn'=>'20210101465464', 'user_id'=>'1001', 'day'=>'20220101', 'create_time'=>'1687140376', ], ]; $TSpreadSheet = TSpreadSheet::export() //创建一个sheet,设置sheet表头,并给表格赋值 ->createWorkSheet($sheetName)->setWorkSheetData($title,$data); // ->createWorkSheet($sheetName1)->setWorkSheetData($title1,$data1);//如果多个sheet可多次创建 //文件存储本地 $path = $TSpreadSheet->generate()->save($filename); echo '生成excel路径:'.$path;exit(); //生成excel路径:E:\spreadsheet-php\example\public\export\20240402\export_demo_2024-04-02_351.xlsx
设置数据有效性
// 示例1:设置下拉列表
$spreadsheet->setColumnValidation('status', [
'type' => 'list',
'options' => ['待审核', '已审核', '已拒绝'],
'promptTitle' => '状态选择',
'promptMessage' => '请从下拉列表中选择状态',
'errorTitle' => '输入错误',
'errorMessage' => '只能从下拉列表中选择',
'showDropDown' => true
]);
// 示例2:设置整数范围验证
$spreadsheet->setColumnValidation('age', [
'type' => 'whole',
'operator' => 'between',
'min' => 0,
'max' => 150,
'promptTitle' => '年龄输入',
'promptMessage' => '请输入0-150之间的整数',
'errorTitle' => '输入错误',
'errorMessage' => '年龄必须在0-150之间',
'errorStyle' => 'stop'
]);
// 示例3:批量设置
$spreadsheet->setColumnValidations([
'status' => ['type' => 'list', 'options' => [...]],
'age' => ['type' => 'whole', 'operator' => 'between', 'min' => 0, 'max' => 150]
]);
这样直接输出到浏览器中下载
$TSpreadSheet->generate()->download($filename);
配置参数可以通过配置文件在初始化时传入
$config = [
'pathName'=>null, //文件存储位置
'fileName'=>null, //文件名称
'horizontalCenter'=>true, //是否居中
'titleHeight'=>null, //定义表头行高,常用22
'titleWidth'=>null, //定义表头列宽(未设置则自动计算宽度),常用20
'height'=>null, //定义数据行高,常用22
'autoFilter'=>false, //自动筛选(是否开启)
'autoDataType'=>true, //自动适应文本类型
'freezePane'=>false, //冻结窗格(要冻结的首行首列"B2",false不开启)
];
$TSpreadSheet = TSpreadSheet::export($config);
//配置参数也可以后期赋值
$TSpreadSheet = TSpreadSheet::export($config)->setAutoFilter(true);
2.2.excel导入
<?php use tinymeng\spreadsheet\TSpreadSheet; require __DIR__.'/vendor/autoload.php'; /** * excel生成文件名 */ $filename = './export_demo.xlsx'; /** * excel表头 */ $title = [ '序号'=>'id', '订单编号'=>'order_sn', '用户id'=>'user_id', '结算日期'=>'day', '下单时间'=>'create_time', ]; //读取并初始化表格内容数据 $TSpreadSheet = TSpreadSheet::import() ->initWorkSheet($filename);//读取并初始化表格内容数据 //设置title对应字段,获取表格内容 $data = $TSpreadSheet->setTitle($title)->getExcelData(); //var_dump($data);die; //也可以设置读取第几个sheet $TSpreadSheet = TSpreadSheet::import() ->setFileName($filename)//读取文件路径 ->setSheet(0)//读取第0个sheet ->setTitleRow(1)//表头所在行 ->initWorkSheet();
打印结果如下
array(3) {
[0]=>
array(3) {
["id"]=>
string(1) "1"
["order_sn"]=>
string(14) "20180101465464"
["create_time"]=>
string(19) "2023-06-19 10:06:16"
}
[1]=>
array(3) {
["id"]=>
string(1) "2"
["order_sn"]=>
string(14) "20190101465464"
["create_time"]=>
string(19) "2023-06-19 10:06:16"
}
[2]=>
array(3) {
["id"]=>
string(1) "3"
["order_sn"]=>
string(14) "20200101465464"
["create_time"]=>
string(19) "2023-06-19 10:06:16"
}
}
大家如果有问题要交流,就发在这里吧: Spreadsheet 交流 或发邮件 666@majiameng.com
tinymeng/spreadsheet 适用场景与选型建议
tinymeng/spreadsheet 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 86 次下载、GitHub Stars 达 1, 最近一次更新时间为 2023 年 06 月 19 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「excel」 「spreadsheet」 「php-spreadsheet」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 tinymeng/spreadsheet 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 tinymeng/spreadsheet 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 tinymeng/spreadsheet 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
This Symfony bundle integrates PhpSpreadsheet into Symfony using Twig.
PHPExcel - OpenXML - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine
PHPExcel - OpenXML - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine
Yii2 export extension
PHP Excel Library
PHPExcel - OpenXML - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine
统计信息
- 总下载量: 86
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 12
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-06-19