~~~
public function room_end_export()
{
$list = [1,2,3,4,5];
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
/** 全局设置 s**/
//设置货币符号$
// $sheet->getStyle('I9')->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_CURRENCY_GBP_SIMPLE);
$sheet->getStyle('I9')->getNumberFormat()->setFormatCode( '"£"#,##0.00_-');
//设置宽度
$sheet->getDefaultColumnDimension()->setWidth('25');
$sheet->getColumnDimension('A')->setWidth('5');
$sheet->getColumnDimension('B')->setWidth('20');
$sheet->getColumnDimension('C')->setWidth('15');
$sheet->getColumnDimension('D')->setWidth('20');
$sheet->getColumnDimension('E')->setWidth('15');
$sheet->getColumnDimension('F')->setWidth('10');
$sheet->getColumnDimension('G')->setWidth('13');
$sheet->getColumnDimension('H')->setWidth('15');
$sheet->getColumnDimension('I')->setWidth('15');
$sheet->getColumnDimension('J')->setWidth('15');
//单元格水平和垂直都居中
$sheet->getStyle('B')->getAlignment()->setVertical(Alignment::VERTICAL_CENTER)->setHorizontal(Alignment::HORIZONTAL_RIGHT);
$sheet->getStyle('H')->getAlignment()->setVertical(Alignment::VERTICAL_CENTER)->setHorizontal(Alignment::HORIZONTAL_RIGHT);
$sheet->getStyle('I')->getAlignment()->setVertical(Alignment::VERTICAL_CENTER)->setHorizontal(Alignment::HORIZONTAL_RIGHT);
$sheet->getStyle('B')
->getFont()
->setName('Times New Roman')
->setBold(true)
->setSize(12);
$sheet->getStyle('H')
->getFont()
->setName('Times New Roman')
->setBold(true)
->setSize(12);
$sheet->getStyle('B:L')
->getFont()
->setName('Times New Roman')
->setBold(false)
->setSize(12);
$sheet->getStyle('C6:E17')
->getFont()
->setName('Times New Roman')
->setBold(false)
->setSize(12);
$sheet->getStyle('I')
->getFont()
->setName('Times New Roman')
->setBold(false)
->setSize(12);
$sheet->getStyle('B19:J19')
->getFont()
->setName('Times New Roman')
->setBold(true)
->setSize(12);
/** 全局设置 end**/
// 合并单元格 合并后,赋值只能给A1,开始的坐标。
$sheet->mergeCells('A4:H4');
$sheet->getCell('A4')->setValue(' Service Inovice');
//单元格水平和垂直都居中
$sheet->getStyle('A4')->getAlignment()->setWrapText(true) // 自动换行
->setVertical(Alignment::VERTICAL_CENTER)->setHorizontal(Alignment::HORIZONTAL_LEFT);
$sheet->getRowDimension(4)->setRowHeight(50);
//将单元格字体设置粗体,字体大小20
$sheet->getStyle('A4')
->getFont()
->setName('Chalkboard')
->setBold(false)
->setSize(36);
$sheet->setCellValue('B6', 'Teacher Name');
$sheet->setCellValue('B7', 'Contact number');
$sheet->setCellValue('B8', 'Contact Email');
$sheet->setCellValue('B9', 'Contact Address');
$sheet->getRowDimension(9)->setRowHeight(35);
$sheet->setCellValue('B11', 'Bill To');
$sheet->setCellValue('B12', 'Address');
$sheet->setCellValue('B16', 'Contact Number');
$sheet->setCellValue('B17', 'Email');
//值、real_name
$sheet->setCellValue('C6', 'real_name');
$sheet->setCellValue('C7', ' '.'13800138000');
$sheet->mergeCells('C8:D8');
$sheet->setCellValue('C8', 'email');
$sheet->mergeCells('C9:D9');
$sheet->setCellValue('C9', 'address');
$sheet->getStyle('C9')->getAlignment()->setWrapText(true);
$sheet->mergeCells('C11:E11');
$sheet->setCellValue('C11', 'Redford Education International Ltd');
$sheet->mergeCells('C12:E15');
$sheet->setCellValue('C12', 'Suite 2, Mission Hall, 53a Woking Road '. PHP_EOL .'Guildford'. PHP_EOL .'England'. PHP_EOL .'GU1 1QD');
$sheet->getStyle('C12')->getAlignment()->setWrapText(true);
//单元格水平和垂直都居中
$sheet->getStyle('C11:H17')->getAlignment()->setWrapText(true) // 自动换行
->setVertical(Alignment::VERTICAL_CENTER)->setHorizontal(Alignment::HORIZONTAL_RIGHT);
$sheet->mergeCells('C16:E16');
$sheet->setCellValue('C16', ' +447466567888');
$sheet->mergeCells('C17:E17');
$sheet->setCellValue('C17', 'admin@redfordeducation.com');
$sheet->setCellValue('H6', 'Inovice #');
$sheet->setCellValue('H7', 'Inovice date');
$sheet->setCellValue('H8', 'Due date');
$sheet->setCellValue('H9', 'Amount Due');
//值、
$inovice_number = ' '.date('dmY',time());
$sheet->setCellValue('I6', $inovice_number);
$sheet->setCellValue('I7', date('d/m/Y'));
$sheet->setCellValue('I8', date('d/m/Y',strtotime("+1 day")));
//课程
$sheet->getStyle('B19:J19')->getAlignment()->setVertical(Alignment::VERTICAL_CENTER)->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->setCellValue('B19', 'No.');
$sheet->setCellValue('C19', 'Date');
$sheet->setCellValue('D19', 'Description');
$sheet->setCellValue('F19', 'Unit');
$sheet->setCellValue('G19', 'Session');
$sheet->setCellValue('H19', 'Rate');
$sheet->setCellValue('I19', 'Amount');
$sheet->setCellValue('J19', 'Note');
//值
foreach ($list as $k => $v) {
$num = 20 + $k;
$sheet->getStyle('D'.$num)->getAlignment()->setWrapText(true); // 自动换行
$sheet->getStyle('H'.$num.':I'.$num)->getNumberFormat()->setFormatCode( '"£"#,##0.00_-');
$sheet->getStyle('B'.$num.':J'.$num)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER)->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('H'.$num)->getFont()->setBold(false);
$sheet->getStyle('B'.$num)->getFont()->setBold(false);
$sheet->mergeCells('D'.$num.':E'.$num);
$sheet->setCellValue('B'.$num, $k+1);
$sheet->setCellValue('C'.$num, date('Y/m/d',time()));
$sheet->setCellValue('D'.$num, '测试');
$sheet->setCellValue('F'.$num, '1');
$sheet->setCellValue('G'.$num, '1');
$sheet->setCellValue('H'.$num, 0);
$sheet->setCellValue('I'.$num, '=F'.$num.' * H'.$num.'');
$sheet->setCellValue('J'.$num, '');
}
$n = count($list)+24;
$sheet->setCellValue('H'.$n, 'Total');
$sheet->setCellValue('H'.($n+1), 'VAT');
$sheet->setCellValue('H'.($n+2), 'Sub Total');
$sheet->getStyle('I'.$n)->getNumberFormat()->setFormatCode( '"£"#,##0.00_-');
$sheet->getStyle('I'.($n+1))->getNumberFormat()->setFormatCode( '"£"#,##0.00_-');
$sheet->getStyle('I'.($n+2))->getNumberFormat()->setFormatCode( '"£"#,##0.00_-');
$sheet->setCellValue('I'.$n, '=SUM(I20:I'.(20 + count($list)-1).')');
$sheet->setCellValue('I'.($n+1), '0');
$sheet->setCellValue('I'.($n+2), '=SUM(I20:I'.(20 + count($list)-1).')');
$sheet->setCellValue('I9', '=SUM(I20:I'.(20 + count($list)-1).')');
$n = $n +5;
$sheet->setCellValue('B'.$n, 'Payment Method');
$sheet->mergeCells('C'.$n.':D'.$n);
$sheet->mergeCells('F'.$n.':G'.$n);
$sheet->mergeCells('I'.$n.':J'.$n);
$sheet->setCellValue('C'.$n, 'Bnk Transfer');
$sheet->setCellValue('E'.$n, 'Sort code');
$sheet->setCellValue('F'.$n, 'sort_code');
$sheet->setCellValue('H'.$n, 'Account no.');
$sheet->setCellValue('I'.$n, 'account_no');
$sheet->getStyle('C'.$n)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER)->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('E'.$n)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER)->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('F'.$n)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER)->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('I'.$n)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER)->setHorizontal(Alignment::HORIZONTAL_CENTER);
$n = $n + 2;
$sheet->mergeCells('C'.$n.':E'.$n);
$sheet->setCellValue('C'.$n, 'I achknolege that the information above is accurate and true');
$sheet->getStyle('C'.$n)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER)->setHorizontal(Alignment::HORIZONTAL_CENTER);
$n = $n + 2;
$sheet->mergeCells('B'.$n.':C'.$n);
$sheet->setCellValue('B'.$n, 'Teacher Signature');
$sheet->getStyle('B'.$n)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER)->setHorizontal(Alignment::HORIZONTAL_LEFT);
$n = $n + 1;
$sheet->mergeCells('B'.$n.':E'.$n);
$sheet->setCellValue('B'.$n, 'Note: This inovice is in GBP');
$sheet->getStyle('B'.$n)->getAlignment()->setVertical(Alignment::VERTICAL_CENTER)->setHorizontal(Alignment::HORIZONTAL_LEFT);
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
$format = 'Xlsx';
// $format只能为 Xlsx 或 Xls
if ($format == 'Xlsx') {
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
} elseif ($format == 'Xls') {
header('Content-Type: application/vnd.ms-excel');
}
$nickname = 'nickname';
$fileName = $inovice_number.$nickname;
//直接输出文件
header("Content-Disposition: attachment;filename="
. $fileName . '.' . strtolower($format));
header('Cache-Control: max-age=0');
$objWriter = IOFactory::createWriter($spreadsheet, $format);
// ob_start();
$objWriter->save('php://output');
// ob_end_clean();
exit();
}
~~~
- PHP书写规则
- 代码缩进
- 大括号{ }书写规则
- 变量赋值对齐
- if条件判断规范
- 避免嵌入式赋值
- 函数和方法的注释
- 项目规范
- 业务逻辑logic
- model模型
- 控制器
- view视图
- 定制项目开发
- 接口输出变量格式
- mysql设计规范
- 二维码系列
- php 用phprqcode 生成简单的二维码
- 小程序二维码
- 其他小工具
- 获取单个汉字拼音首字母
- js 调起打印多出一张空白的问题?
- php 2张图片合拼
- 判断一个汉字可以等于1个字符,2个字符,3个字符
- 微信小程序获取页面路径
- 小程序js、canvas实现矩形圆角、圆形头像图片
- php phpMailer 发送邮件(亲测有效)
- 系统配置表
- php 用tcpdf 生成pdf
- PHP mkdir():创建目录
- php 通过svg动态生成生成后缀图标
- php 本地安装SSL证书
- php 生成首字母头像
- php 接口数据压缩返回,减少带宽
- PHP向二维数组多维数组追加相同元素
- php 指定时间戳上加上一天,一个月,一年的方法
- Spreadsheet 表格生成
- php 多维数组排序 多维数组按照某个字段排序
- php根据开始和结束时间获取期间日期
- php 获取本周、上周、本月、上月及指定时间所在周、月的起止时间
- php GeoIP2通过ip获取国家和地区城市
- 奇葩报错问题
- session赋值报错
- 服务器配置lnmp
- 开启mysql binglog 日志
- lnmp 开启远程访问3306
- 开启mysql 慢日志查询
- 开通Liunx 3306 端口(远程连接开放)
- 搭建lnmp
- liunx 多台服务器搭建共享文件夹图片文件夹
- liunx 操作命令1
- nginx专区
- 禁止外部ip访问
- 强制跳转到https
- mysql专区
- 版本5.7报错 only_full_group_by
- 把同一张表的一个字段的内容复制到另一个字段里
- lnmp关闭严格模式
- mysql 两张不同结构的表连表查询,合并,并分页,排序 教你如何实现UNION
- mysql 查询一张表中某个字段不同状态的数量统计
- mysql数据库快速插入百万条级别的测试数据
- MySQL EXPLAIN 详解,可用EXPLAIN来分析优化数据库sql语句
- mysql 三星索引
- mysql 返回数据排名查询获取排名的方法,亲测有效
- mysql使用查询出来的值并且更新update新的表报错?叫你一招
- mysql 怎样自定义in查询操作排序
- mysql 百万级别和千万级数据分页查询性能优化
- mysql 查询某个字段按照逗号分割返回
- mysql 用sql命令导入数据库
- mysql 根据某个字段的值匹配替换某个值
- Mysql中分组后取最新的一条数据排序
- Certbot-免费的https证书
- session_start()报错问题
- 文件大打不开?代码实现分割
- windows服务器专区
- apache 突然重启动不了
- windows 定时任务
- liunx专区
- liunx 定时器检查php是否能访问,重启
- liunx 操作命令
- 定时器 tp5 命令行
- liunx查看端口是否开放
- liunx上传或者下载本地文件
- 前端
- jq克隆html
- Jquery添加元素(append,prepend,after,before四种方法区别对比)
- 小程序switch样式修改
- css div 里面模块 平均展开
- 安全小学堂
- 验证码一次一码
- 实战thinkphp6
- 前言
- 中间件
- 开启多语言
- RabbitMQ 专区
- 下载RabbitMQ
- ftp专区
- Linux安装vsftpd及配置详解
- 小程序栏目
- 微信小程序封装统一接口请求api数据
- 云数据库
- 小程序云开发更新云函数数组的某一项,并且某个是变量代替
- php面试总结
- Mysql面试
- PHP面试知识
- Thinkphp框架小知识
- fastadmin 文档
- fastadmin js 渲染 动态下拉(SelectPage)组件
- fastadmin 列表搜索栏 支持三级联动 地区选项
- fastadmin searchList组件自定义数据返回
- 开发工具
- phpstorm 一直在Indexing,一直加载索引,无法正常使用
- PHP专区
- session 工作流程
- Redis
- php redis 基本操作
- SourceTree 3.3.9跳过注册安装
- composer 专区
- 手把手教你写一个composer包
- freessl证书申请