首页
留言
友情链接
Search
1
如何使用JavaScript获取和设置CSS root变量值
931 阅读
2
中国历史朝代顺序图
483 阅读
3
春和 《江海共余生》
400 阅读
4
清除浮动,单行多行超出用...
338 阅读
5
Centos7 下编译安装php8.2
310 阅读
分享
Web前端
html&css
javascript
Vue
shopify
shoplazza
后端
ThinkPHP
YII2
服务器端
软件安装
问题合集
历史
故事
诗词
生活
学习
其他
抖音
快手
小视频
随笔
易经
书摘
登录
/
注册
Search
标签搜索
诗词
sunshine
累计撰写
143
篇文章
累计收到
14
条评论
首页
栏目
分享
Web前端
html&css
javascript
Vue
shopify
shoplazza
后端
ThinkPHP
YII2
服务器端
软件安装
问题合集
历史
故事
诗词
生活
学习
其他
抖音
快手
小视频
随笔
易经
书摘
页面
留言
友情链接
搜索到
2
篇与
的结果
2024-05-11
PHP7.4版本下的excel表格导出应用案例
最新版本的phpoffice组件最低版本要求PHP8.0,所以需要安装旧版本的,这里测试挑选了一个1.23的版本可以使用,在项目根目录composer运行安装组件:composer require phpoffice/phpspreadsheet:1.23应用案例:首先定义一个导出表格的函数#[NoReturn] function exportExcel($expTitle, $expCellName, $expTableData, $setWidth = []): void { $spreadsheet = new Spreadsheet(); $spreadsheet->getActiveSheet()->setTitle($expTitle . date('Ymd')); $cellNum = count($expCellName); $len = count($expTableData); // 设置表头字段 foreach ($expCellName as $k => $v) { $spreadsheet->getActiveSheet()->setCellValueByColumnAndRow($k + 1, 1, $v); } // 添加数据 foreach ($expTableData as $k => $v) { for ($i = 0; $i < $cellNum; $i++) { $spreadsheet->getActiveSheet()->setCellValueByColumnAndRow($i + 1, $k + 2, $expTableData[$k][$expCellName[$i]]); } } // // 添加所有边框/居中 // $styleArrayBody = [ // 'borders' => [ // 'allBorders' => [ // 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN, // 'color' => ['argb' => '333333'], // ], // ], // 'alignment' => [ // 'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER, // ], // ]; // $total_rows = $len + 1; // 表格总行数要加上表头一栏 // $spreadsheet->getActiveSheet()->getStyle('A1:' . end($setWidth) . $total_rows)->applyFromArray($styleArrayBody); // // 设置列宽 // if ($setWidth) { // foreach ($setWidth as $k => $v) { // $spreadsheet->getActiveSheet()->getColumnDimension($v)->setAutoSize(true); // 列宽自定义 // } // } else { // $spreadsheet->getActiveSheet()->getDefaultColumnDimension()->setWidth(14); // } $filename = $expTitle . date('Ymd') . '.xlsx'; header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="' . $filename . '"'); header('Cache-Control: max-age=0'); $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx'); $writer->save('php://output'); die(); }其次处理数据// 导出数据 $list = Db::table('user')->select(); $columns = [ 'id' => 'ID', 'username' => '用户名', 'age' => '年龄', 'gender' => '性别', ]; $columns_fields = array_keys($columns); // 导出数据到csv文件 $xlsData = []; // 导出数据到excel文件 foreach ($list as $key => $value) { foreach ($columns_fields as $k => $v) { if (isset($value[$v])) { $xlsData[$key][$columns[$v]] = $value[$v]; } } } // 编辑表格的title,返回的数据格式是:$xlsCell = ['id', 'username', 'age'] $length = count($xlsData); $xlsCell = []; foreach ($xlsData[$length - 1] as $k => $v) { $xlsCell[] = $k; } // 你的表格一共有多少字段信息需要导出,设置对应的excel坐标,动态判断,从A到Z $cellNum = count($xlsCell); $setWidth = []; for ($i = 0; $i < $cellNum; $i++) { $setWidth[] = chr(ord('A') + $i); } // 调用自定义方法 exportExcel('用户表', $xlsCell, $xlsData, $setWidth);
2024年05月11日
73 阅读
0 评论
1 点赞
2023-11-24
Yii2 的 components 是干什么的?底层原理是什么?
在 Yii2 中,components 是用于配置和管理各种应用程序组件的关键部分。组件是 Yii2 框架中的基本构建块,可以是数据库连接、缓存、日志处理、邮件发送等。通过在配置文件中定义 components,我们可以在整个应用程序中轻松访问和使用这些组件。底层原理:组件的配置:在 Yii2 中,组件配置是以数组的形式定义在应用程序的配置文件中,通常是 config/web.php 或 config/console.php。配置文件可以定义多个组件,每个组件都有一个唯一的名称,用于在应用程序的其他部分引用和访问该组件。组件的实例化和注册:当应用程序启动时,Yii2 框架会根据配置文件中的组件定义,实例化并注册这些组件。这意味着当你访问应用程序的某个组件时,Yii2 会返回该组件的实例,并且这个实例将在整个应用程序的生命周期内保持不变,以确保组件的单例模式。组件的访问:要在 Yii2 应用程序中访问组件,可以使用 Yii::$app->componentName 的方式,其中 componentName 是在配置文件中定义的组件名称。通过这种方式,你可以在任何地方访问和使用组件的功能,而不需要重复实例化或管理组件的生命周期。组件的依赖注入:Yii2 框架还支持组件之间的依赖注入。这意味着你可以在定义一个组件时,通过 depends 属性指定该组件依赖于其他组件。这样,当实例化一个组件时,Yii2 会自动解析和注入该组件所依赖的其他组件,使组件之间的耦合度降低,代码更加灵活和可维护。示例:以下是一个简单的组件配置示例,演示了如何定义一个数据库连接组件和一个缓存组件:return [ 'components' => [ 'db' => [ // 数据库连接组件 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=mydatabase', 'username' => 'db_user', 'password' => 'db_password', 'charset' => 'utf8', ], 'cache' => [ // 缓存组件 'class' => 'yii\caching\FileCache', ], // 其他组件的配置... ], // 应用程序的其他配置... ];在上述示例中,我们定义了两个组件:db 是一个数据库连接组件,使用了 yii\db\Connection 类来表示数据库连接;cache 是一个缓存组件,使用了 yii\caching\FileCache 类来表示文件缓存。通过在代码中使用 Yii::$app->db 和 Yii::$app->cache,我们可以在整个应用程序中访问和使用这两个组件的功能。总结:components 是 Yii2 框架中用于配置和管理应用程序组件的关键部分,底层原理是通过配置文件中的数组定义来实例化和注册这些组件,并通过依赖注入实现组件之间的耦合。
2023年11月24日
57 阅读
0 评论
0 点赞