tp5中phpexcel生成表格實例分享
最近專案中需要使用使用phpexcel產生表格,但由網頁匯出excel時,檔案的後綴總是會帶著html。後來調試了半天發現,需要在header頭輸出之前使用ob_end_clean( )去清除php緩衝區中的內容。因為在herder頭輸出之前,php是不能有任何輸出的,就算是一個空格,一旦有了輸出,你設定的php header頭就無效了,因為此時的header頭資訊早已經固定。
輸出excle時出現亂碼的情況也是用這種方式解決。
/** * 下载excel表格 */ public function down_excel() { $params = $_GET; $filename = $params['cname'] . '收银明细列表' . date('Y-m-d'); $objPHPExcel = new \PHPExcel(); //设置表头信息 $letter = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L'); $excel_column = array( 'id' => "订单号", 'dt' => "交易时间", 'money' => "金额", 'status' => "交易状态", 'pay_type' => "支付渠道", 'device' => "终端号", 'operator' => "收银员", 'pay_id' => "渠道流水号", 'client_name' => "商户名称", 'pay_scense' => "支付场景", 'operate_fee' => "手续费", 'no' => "小票单号", ); $new_letter = []; $new_excel_column = []; foreach ($params['act_name'] as $k => $d) { $new_letter[$d] = $letter[$k]; $new_excel_column[$d] = $excel_column[$d]; } foreach ($new_excel_column as $k => $d) { //设置行宽自动调整 $objPHPExcel->getActiveSheet()->getColumnDimension($new_letter[$k])->setWidth(12); $objPHPExcel->getActiveSheet()->setCellValue($new_letter[$k] . '1', $d); } //填充表格信息 $data['rows'] = []; foreach ($params['down_class'] as $item) { switch ($item) { case 'pay_success': $params['dm_status'] = 2; break; case 'refund_success': $params['dm_status'] = 4; break; case 'pay_fail': $params['dm_status'] = 3; break; case 'pay_undefined': $params['dm_status'] = 5; break; } $ret = $this->getData($params); $data['rows'] = array_merge($data['rows'], $ret['rows']); } $total = 0; if (!empty($data['rows'])) { foreach ($data['rows'] as $k => $d) { $i = $k + 2; foreach ($new_letter as $key => $item) { //填充数据 $objPHPExcel->getActiveSheet()->setCellValue($item . $i, strip_tags($d[$key])); } $total += strip_tags($d['money']); } } $index = count($data['rows']) + 2; $objPHPExcel->getActiveSheet()->mergeCells("A{$index}:B{$index}"); $objPHPExcel->getActiveSheet()->setCellValue('A' . $index, '合计'); $objPHPExcel->getActiveSheet()->setCellValue('C' . $index, $total); //保存表格版本格式 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel,"Excel2007"); //下载表格 ob_end_clean(); //关闭缓冲区之后再输出header头,在header设置之前,可能某个地方有了输出,导致Content-Type的类型为text/html,所以输出的表格后缀才会是html header('Content-Type: application/octet-stream'); header("Content-Disposition: attachment; filename=\"{$filename}.xlsx\""); $objWriter->save("php://output"); }
相關推薦:
# #########PHPExcel如何實現合併與分割單元格######以上是tp5中phpexcel生成表格實例分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。
