首页
留言
友情链接
标签页
Search
1
如何使用JavaScript获取和设置CSS root变量值
1,010 阅读
2
中国历史朝代顺序图
628 阅读
3
春和 《江海共余生》
442 阅读
4
hyperf常用命令
374 阅读
5
清除浮动,单行多行超出用...
354 阅读
分享
Web前端
html&css
javascript
Vue
shopify
shoplazza
后端
ThinkPHP
YII2
服务器端
软件安装
问题合集
故事
诗词
生活
学习
学科
语文
数学
英语
物理
化学
生物
政治
历史
地理
自然
其他
抖音
快手
小视频
随笔
易经
书摘
登录
/
注册
Search
标签搜索
一年级语文
sunshine
累计撰写
146
篇文章
累计收到
15
条评论
首页
栏目
分享
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日
88 阅读
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日
70 阅读
0 评论
0 点赞