~~~
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證書申請