phpspreadsheet


2019-5-9 8:20:07 星期四

昨天在看PHPExcel的時候, github上作者說已經停止更新了, 推薦使用phpspreadsheet,

查看了一下官方文檔, 功能還挺強大的, 可以讀取圖表, 還可以讀取格中使用了公式表計算的值, 而且是鏈式操作, 還使用了composer更新

簡單寫了一個小demo

安裝

按照官網的命令,  先通過composer  把phpspreadsheet下載下來, 主要是使用autoload, phpspreadsheet有多層繼承,抽象和接口

1. composer init

2. composer require phpoffice/phpspreadsheet

demo

 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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM