日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

PHP(3):PHP读取Excel文件的记录-方法1

發(fā)布時(shí)間:2023/12/31 php 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP(3):PHP读取Excel文件的记录-方法1 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  因?yàn)楣ぷ餍枰獙xcel的文件記錄讀出再寫入數(shù)據(jù)庫(kù)中,之前使用的是VBS,可是那也不是正規(guī)的應(yīng)用程序,使用PowerBuilder也可以,但是PowerBuilder畢竟只是臨時(shí)使用,C#好長(zhǎng)時(shí)間不用了,就打算使用最近學(xué)習(xí)的PHP來(lái)操作。

  下班后就開始干,折騰了將近4個(gè)小時(shí),終于搞定了,遇到了好多的坑,快崩潰了,想一想為這些膚淺的代碼所累,程序員的日子不好過(guò)!

  要使用PHP讀取Excel的文件記錄,查了資料都是使用PHPExcel這個(gè)文件包,并且全部都要使用Composer來(lái)安裝,結(jié)果遇到了第一個(gè)坑:Composer始終安裝不上PHPOffice/PHPExcel。

  首先安裝Composer。

  composer require phpoffice/phpspreadsheet,后面可加版本號(hào)也可以不加。

  可能是因?yàn)槲覀兩贤饩W(wǎng)代理的緣故,始終安裝不上,好不容易安裝上了,使用Composer始終安裝不上PHPOffice/PHPExcel,各種莫名其妙的錯(cuò)誤提示。

  接下來(lái)我下載了JetBrains PhpStorm,在它里面進(jìn)行安裝,錯(cuò)誤提示變了一些,可是還不行,打開OPENSSL和下載證書也還是不行。

  為這個(gè)耗費(fèi)了3個(gè)小時(shí),真心快崩潰了,想一想為什么別人可以呢?

  為什么一定要Composer安裝?其實(shí)安裝不過(guò)是將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ù)組和字符串偏移量訪問(wèn)語(yǔ)法,這個(gè)顯示有幾十行,讓人沮喪,因?yàn)轭悗?kù)是別人寫的,本來(lái)打算放棄的,將網(wǎng)頁(yè)拉到最后,竟然有數(shù)據(jù)記錄讀出來(lái),真是讓人驚喜,意味著只要解決這個(gè)錯(cuò)誤就可以了。

  逐個(gè)打開有錯(cuò)誤提示的文件,將數(shù)組的“{}”訪問(wèn)方式改成“[]”,錯(cuò)誤太多了改了半個(gè)小時(shí),問(wèn)題解決了。

  正確的代碼:

<?php error_reporting(E_ALL);//報(bào)告所有錯(cuò)誤 date_default_timezone_set('PRC'); //設(shè)置時(shí)區(qū)為中國(guó)/** 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);?>

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

  后面就是寫入數(shù)據(jù)庫(kù)了。

  這個(gè)方法還是有點(diǎn)麻煩,后面找其他的方法,至少ODBC應(yīng)該是可以的。

總結(jié)

以上是生活随笔為你收集整理的PHP(3):PHP读取Excel文件的记录-方法1的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。