您好,登錄后才能下訂單哦!
這篇文章主要介紹“PHP怎么實(shí)現(xiàn)讀取Excel文件的記錄”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“PHP怎么實(shí)現(xiàn)讀取Excel文件的記錄”文章能幫助大家解決問題。
首先安裝Composer。
composer require phpoffice/phpspreadsheet,后面可加版本號(hào)也可以不加。
可能是因?yàn)槲覀兩贤饩W(wǎng)代理的緣故,始終安裝不上,好不容易安裝上了,使用Composer始終安裝不上PHPOffice/PHPExcel,各種莫名其妙的錯(cuò)誤提示。
接下來我下載了JetBrains PhpStorm,在它里面進(jìn)行安裝,錯(cuò)誤提示變了一些,可是還不行,打開OPENSSL和下載證書也還是不行。
為這個(gè)耗費(fèi)了3個(gè)小時(shí),真心快崩潰了,想一想為什么別人可以呢?
為什么一定要Composer安裝?其實(shí)安裝不過是將PHPOffice的信息寫到配置文件,方便程序員在編程環(huán)境下進(jìn)行代碼提示、錯(cuò)誤檢測(cè)還有后期的運(yùn)行提示,不安裝又怎樣?
在網(wǎng)上下載一個(gè)付費(fèi)的PHPOFFICE,解包到一個(gè)目錄,引用一下,按照網(wǎng)上的方式讀取,結(jié)果幾十行的錯(cuò)誤提示:
Deprecated: Array and string offset access syntax with curly braces is deprecated in G:\PHP2021\HTAPP\phpexcel\Classes\PHPExcel\Shared\String.php on line 526
......
Deprecated: Array and string offset access syntax with curly braces is deprecated in G:\PHP2021\HTAPP\phpexcel\Classes\PHPExcel\Reader\Excel5.php on line 1928
......
Deprecated: Array and string offset access syntax with curly braces is deprecated in G:\PHP2021\HTAPP\phpexcel\Classes\PHPExcel\Calculation.php on line 2551
......
Deprecated: Array and string offset access syntax with curly braces is deprecated in G:\PHP2021\HTAPP\phpexcel\Classes\PHPExcel\Worksheet\AutoFilter.php on line 720
......
Deprecated: Array and string offset access syntax with curly braces is deprecated in G:\PHP2021\HTAPP\phpexcel\Classes\PHPExcel\Cell.php on line 812
這個(gè)意思是:不推薦使用:不推薦使用帶大括號(hào)的數(shù)組和字符串偏移量訪問語法,這個(gè)顯示有幾十行,讓人沮喪,因?yàn)轭悗焓莿e人寫的,本來打算放棄的,將網(wǎng)頁拉到最后,竟然有數(shù)據(jù)記錄讀出來,真是讓人驚喜,意味著只要解決這個(gè)錯(cuò)誤就可以了。
逐個(gè)打開有錯(cuò)誤提示的文件,將數(shù)組的“{}”訪問方式改成“[]”,錯(cuò)誤太多了改了半個(gè)小時(shí),問題解決了。
<?php error_reporting(E_ALL);//報(bào)告所有錯(cuò)誤 date_default_timezone_set('PRC'); //設(shè)置時(shí)區(qū)為中國 /** PHPExcel_IOFactory */ require_once './Classes/PHPExcel/IOFactory.php'; $excelFilename="安裝記錄111.xlsx"; $ext=substr($excelFilename,strripos($excelFilename,'.')); $dataSheet=[]; if($ext=='.xlsx'){ //按Excel2007文件格式讀取 $reader = PHPExcel_IOFactory::createReader('Excel2007'); $reader->setReadDataOnly(true); $spreadSheet=$reader->load($excelFilename); $workSheet=$spreadSheet->getActiveSheet(); foreach($workSheet->getRowIterator() as $key=>$row){ $cellIterator=$row->getCellIterator(); $cellIterator->setIterateOnlyExistingCells(false); foreach($cellIterator as $k=>$cell){ $dataSheet[$key][$k]=$cell->getValue(); } } }elseif($ext=='.xls'){ //以Excel5(Excel97-2003工作簿)的格式讀取 $reader = PHPExcel_IOFactory::createReader('Excel5'); //加載excel文件 $PHPExcel = $reader->load("WPS安裝記錄.xls"); //讀取第一個(gè)工作表 $sheet = $PHPExcel->getSheet(0); //獲取總行數(shù) $highestRow = $sheet->getHighestRow(); //獲取總列數(shù) $highestColumm = $sheet->getHighestColumn(); //讀取單元格的數(shù)據(jù)(從第一行,A列開始先行后列) for ($row = 1; $row <= $highestRow; $row++){ for ($column = 'A'; $column <= $highestColumm; $column++) { $dataSheet[] = $sheet->getCell($column.$row)->getValue(); } } }else{ exit("不能識(shí)別{$excelFilename}.\n"); } print_r($dataSheet); ?>
搞定!文件記錄全部顯示出來,既可以讀取后綴為xls的文件也可以讀取xlsx的文件。
后面就是寫入數(shù)據(jù)庫了。
這個(gè)方法還是有點(diǎn)麻煩,后面找其他的方法,至少ODBC應(yīng)該是可以的。
補(bǔ)充
PHP其實(shí)不僅能讀取Excel文件的記錄,還可以生成Excel文件
下面這代碼中函數(shù)arrayToExcel的功能是把一個(gè)二維數(shù)組的數(shù)據(jù)生成一個(gè)excel文件,并且保存在服務(wù)器上。
require_once 'Classes/PHPExcel/Reader/Excel2007.php'; require_once 'Classes/PHPExcel/Reader/Excel5.php'; include 'Classes/PHPExcel/IOFactory.php'; function arrayToExcel($data){ $objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->setTitle('firstsheet'); $objPHPExcel->getDefaultStyle()->getFont()->setName('Arial'); $objPHPExcel->getDefaultStyle()->getFont()->setSize(10); //add data $i = 2; foreach ($data as $line){ $objPHPExcel->getActiveSheet()->setCellValue('A'.$i, $line['From']); $objPHPExcel->getActiveSheet()->getCell('A'.$i)->setDataType('n'); $objPHPExcel->getActiveSheet()->setCellValue('B'.$i, $line['To']); $objPHPExcel->getActiveSheet()->getCell('B'.$i)->setDataType('n'); $i++; } $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $file = 'excel.xls'; $objWriter->save($file); }
如果你不希望保存在服務(wù)器上,希望生成以后直接下載到客戶端,可以在輸出文件的時(shí)候加入下面的代碼,而不使用 $objWriter->save($file);
代碼如下:
header("Pragma: public"); header("Expires: 0"); header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); header("Content-Type:application/force-download"); header("Content-Type:application/vnd.ms-execl"); header("Content-Type:application/octet-stream"); header("Content-Type:application/download"); header('Content-Disposition:attachment;filename="excel.xls"'); header("Content-Transfer-Encoding:binary"); $objWriter->save('php://output');
關(guān)于“PHP怎么實(shí)現(xiàn)讀取Excel文件的記錄”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。