溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP怎么實現讀取Excel文件的記錄

發布時間:2022-03-04 13:35:21 來源:億速云 閱讀:178 作者:iii 欄目:開發技術

這篇文章主要介紹“PHP怎么實現讀取Excel文件的記錄”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“PHP怎么實現讀取Excel文件的記錄”文章能幫助大家解決問題。

首先安裝Composer。

composer require phpoffice/phpspreadsheet,后面可加版本號也可以不加。

可能是因為我們上外網代理的緣故,始終安裝不上,好不容易安裝上了,使用Composer始終安裝不上PHPOffice/PHPExcel,各種莫名其妙的錯誤提示。

接下來我下載了JetBrains PhpStorm,在它里面進行安裝,錯誤提示變了一些,可是還不行,打開OPENSSL和下載證書也還是不行。

為這個耗費了3個小時,真心快崩潰了,想一想為什么別人可以呢?

為什么一定要Composer安裝?其實安裝不過是將PHPOffice的信息寫到配置文件,方便程序員在編程環境下進行代碼提示、錯誤檢測還有后期的運行提示,不安裝又怎樣?

在網上下載一個付費的PHPOFFICE,解包到一個目錄,引用一下,按照網上的方式讀取,結果幾十行的錯誤提示:

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

這個意思是:不推薦使用:不推薦使用帶大括號的數組和字符串偏移量訪問語法,這個顯示有幾十行,讓人沮喪,因為類庫是別人寫的,本來打算放棄的,將網頁拉到最后,竟然有數據記錄讀出來,真是讓人驚喜,意味著只要解決這個錯誤就可以了。

逐個打開有錯誤提示的文件,將數組的“{}”訪問方式改成“[]”,錯誤太多了改了半個小時,問題解決了。

<?php
error_reporting(E_ALL);//報告所有錯誤
date_default_timezone_set('PRC');   //設置時區為中國
 
/** 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");
	//讀取第一個工作表
	$sheet = $PHPExcel->getSheet(0);
	//獲取總行數
	$highestRow = $sheet->getHighestRow();
	//獲取總列數
	$highestColumm = $sheet->getHighestColumn();
 
	//讀取單元格的數據(從第一行,A列開始先行后列)
	for ($row = 1; $row <= $highestRow; $row++){
		for ($column = 'A'; $column <= $highestColumm; $column++) {
			$dataSheet[] = $sheet->getCell($column.$row)->getValue();
		}
	}
}else{
	exit("不能識別{$excelFilename}.\n");
}
 
print_r($dataSheet);
 
?>

搞定!文件記錄全部顯示出來,既可以讀取后綴為xls的文件也可以讀取xlsx的文件。

后面就是寫入數據庫了。

這個方法還是有點麻煩,后面找其他的方法,至少ODBC應該是可以的。

補充

PHP其實不僅能讀取Excel文件的記錄,還可以生成Excel文件

下面這代碼中函數arrayToExcel的功能是把一個二維數組的數據生成一個excel文件,并且保存在服務器上。

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);
}

如果你不希望保存在服務器上,希望生成以后直接下載到客戶端,可以在輸出文件的時候加入下面的代碼,而不使用 $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');

關于“PHP怎么實現讀取Excel文件的記錄”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女