2019-5-9 8:20:07 星期四php
昨天在看PHPExcel的時候, github上做者說已經中止更新了, 推薦使用phpspreadsheet,git
查看了一下官方文檔, 功能還挺強大的, 能夠讀取圖表, 還能夠讀取格中使用了公式表計算的值, 並且是鏈式操做, 還使用了composer更新github
簡單寫了一個小democomposer
安裝oop
按照官網的命令, 先經過composer 把phpspreadsheet下載下來, 主要是使用autoload, phpspreadsheet有多層繼承,抽象和接口ui
1. composer initspa
2. composer require phpoffice/phpspreadsheetcode
demoserver
1 include('D:/server/code/composer/vendor/autoload.php'); //將安裝phpspreadsheet後的 2 3 use PhpOffice\PhpSpreadsheet\IOFactory; 4 5 6 $inputFileType = 'Xls'; 7 $inputFileName = 'C:\Users\zhangzhibin\Downloads\PhpSpreadsheet-1.6.0\PhpSpreadsheet-1.6.0\samples\Reader\sampleData\example2.xls'; 8 9 10 $reader = IOFactory::createReader($inputFileType); 11 $reader->setReadDataOnly(true); //只讀取數據, 不讀取其餘東西 12 $worksheetData = $reader->listWorksheetInfo($inputFileName); //獲取Excel中的全部表單的統計信息, 並不讀取數據 13 14 foreach ($worksheetData as $worksheet) { 15 echo '表單名' . $worksheet['worksheetName'].'<br>'; 16 echo 'Rows: ' . $worksheet['totalRows'] . ' Columns: ' . $worksheet['totalColumns'].'<br>'; 17 echo 'Cell Range: A1:' . $worksheet['lastColumnLetter'] . $worksheet['totalRows'].'<br>'; 18 } 19 20 //讀取表單中的數據 21 try { 22 echo '加載前內存使用 '.strval(memory_get_usage(false)).'<br>'; 23 $spreadsheet = IOFactory::load($inputFileName); 24 echo '加載後內存使用 '.strval(memory_get_usage(false)).'<br>'; 25 26 foreach ($spreadsheet->getWorksheetIterator() as $worksheet) { 27 echo '表格名 - ' . $worksheet->getTitle().'<br>'; 28 29 foreach ($worksheet->getRowIterator() as $row) { 30 echo ' 行號 - ' . $row->getRowIndex().' 當前使用內存:'.memory_get_usage(false).'<br>'; 31 32 $cellIterator = $row->getCellIterator(); 33 $cellIterator->setIterateOnlyExistingCells(false); // Loop all cells, even if it is not set 34 foreach ($cellIterator as $cell) { 35 if ($cell !== null) { 36 //echo '單元格 - ' . $cell->getCoordinate() . ' - ' . $cell->getCalculatedValue().'<br>'; 37 echo '單元格 - ' . $cell->getCoordinate() . ' - ' . $cell->getValue().'<br>'; 38 } 39 } 40 } 41 } 42 } catch (InvalidArgumentException $e) { 43 echo $e->getMessage(); 44 }