隨著互聯(lián)網(wǎng)應(yīng)用日益普及,以及各類數(shù)據(jù)之間的相互交互和數(shù)據(jù)轉(zhuǎn)移需求的不斷增長,文件格式的轉(zhuǎn)換和導(dǎo)入導(dǎo)出已成為常見需求之一。在Web應(yīng)用程序中,導(dǎo)入和導(dǎo)出Excel文件是日常工作中常見的數(shù)據(jù)交換方式。本文將介紹如何在ThinkPHP6框架中實現(xiàn)Excel導(dǎo)入導(dǎo)出功能。
一、 ThinkPHP6框架介紹
ThinkPHP6是一個自由、開源、快速、簡單的面向?qū)ο蟮妮p量級PHP框架。它具有高性能、豐富的功能、靈活的配置、強大的擴展性等特點,已經(jīng)成為PHP應(yīng)用開發(fā)領(lǐng)域的一個熱門框架。
二、Excel導(dǎo)出
- 示例代碼
<?php namespace appindexcontroller; use PHPExcel; use PHPExcel_IOFactory; class ExcelExport { public function export() { $objPHPExcel = new PHPExcel(); // 設(shè)置當(dāng)前活動sheet $objPHPExcel->setActiveSheetIndex(0); // 設(shè)置標(biāo)題 $objPHPExcel->getActiveSheet()->setTitle('學(xué)生成績'); // 設(shè)置表頭 $objPHPExcel->getActiveSheet()->setCellValue('A1', '學(xué)號'); $objPHPExcel->getActiveSheet()->setCellValue('B1', '姓名'); $objPHPExcel->getActiveSheet()->setCellValue('C1', '語文'); $objPHPExcel->getActiveSheet()->setCellValue('D1', '數(shù)學(xué)'); $objPHPExcel->getActiveSheet()->setCellValue('E1', '英語'); $objPHPExcel->getActiveSheet()->setCellValue('F1', '總分'); // 設(shè)置數(shù)據(jù) $data = [ ['1001', '張三', '85', '90', '88', '263'], ['1002', '李四', '90', '88', '90', '268'], ['1003', '王五', '92', '87', '91', '270'] ]; $row = 2; foreach ($data as $val) { $objPHPExcel->getActiveSheet()->setCellValue('A' . $row, $val[0]); $objPHPExcel->getActiveSheet()->setCellValue('B' . $row, $val[1]); $objPHPExcel->getActiveSheet()->setCellValue('C' . $row, $val[2]); $objPHPExcel->getActiveSheet()->setCellValue('D' . $row, $val[3]); $objPHPExcel->getActiveSheet()->setCellValue('E' . $row, $val[4]); $objPHPExcel->getActiveSheet()->setCellValue('F' . $row, $val[5]); $row++; } // 設(shè)置列寬 $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(15); // 導(dǎo)出Excel header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="學(xué)生成績.xlsx"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('php://output'); exit; } }
登錄后復(fù)制
- 說明
上面的示例代碼演示了如何使用PHPExcel庫實現(xiàn)Excel導(dǎo)出。PHPExcel庫是一個PHP讀寫Excel文件的開源庫,功能強大,操作簡單。
首先,我們創(chuàng)建了一個PHPExcel實例,然后設(shè)置當(dāng)前活動sheet,并設(shè)置了標(biāo)題和表頭。之后,我們設(shè)置數(shù)據(jù)并對列寬進行了設(shè)置。最后,我們使用header函數(shù)設(shè)置了導(dǎo)出Excel的內(nèi)容類型、文件名和緩存控制,然后使用PHPExcel_IOFactory類的createWriter方法創(chuàng)建一個Excel2007格式的寫入器,并將數(shù)據(jù)流輸出到瀏覽器。
三、Excel導(dǎo)入
- 示例代碼
<?php namespace appindexcontroller; use PHPExcel; use PHPExcel_IOFactory; class ExcelImport { public function import() { if (empty($_FILES['file']['tmp_name'])) { echo '請選擇文件!'; exit; } $reader = PHPExcel_IOFactory::createReader('Excel2007'); $PHPExcel = $reader->load($_FILES['file']['tmp_name']); $sheet = $PHPExcel->getSheet(0); // 獲得第1個工作表 $highestRow = $sheet->getHighestRow(); // 取得總行數(shù) $highestColumn = $sheet->getHighestColumn(); // 取得總列數(shù) $data = []; for ($row = 2; $row <= $highestRow; $row++) { $rowData = []; for ($col = 'A'; $col <= $highestColumn; $col++) { $rowData[$col] = (string)$sheet->getCell($col . $row)->getValue(); } $data[] = $rowData; } var_dump($data); } }
登錄后復(fù)制
- 說明
上面的示例代碼演示了如何使用PHPExcel庫實現(xiàn)Excel導(dǎo)入。首先,我們判斷客戶端是否上傳了文件,并使用PHPExcel_IOFactory類的createReader方法創(chuàng)建一個Excel2007格式的讀取器。然后,我們使用$reader的load方法將Excel文件讀入內(nèi)存,并獲取其中的第一個工作表。接下來,我們通過最高行和最高列的索引值循環(huán)遍歷Excel表格,將每行數(shù)據(jù)以關(guān)聯(lián)數(shù)組的形式存儲到$data變量中,并最終輸出該變量。
四、總結(jié)
通過本文的介紹,我們了解了如何使用ThinkPHP6框架結(jié)合PHPExcel庫實現(xiàn)Excel文件的導(dǎo)入導(dǎo)出功能,這為我們的Web應(yīng)用程序開發(fā)提供了便利和支持。我們可以根據(jù)實際的需求,靈活運用PHPExcel庫的各種方法和屬性,來實現(xiàn)文件格式交換,并更好地服務(wù)于我們的應(yīng)用程序。
以上就是ThinkPHP6中如何進行Excel導(dǎo)入和導(dǎo)出?的詳細(xì)內(nèi)容,更多請關(guān)注www.xfxf.net其它相關(guān)文章!