php讀取xlsx文件
安裝
composer require phpoffice/phpspreadsheet
代碼
<?php
require './vendor/autoload.php';
$filename = 'aa.xlsx';
# 根據文件名自動創建 適用於不知道文件後綴時xls還是xlsx的情況
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($filename);
# 或者如果確定文件後綴,直接創建,性能會略優於上面方法
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx");
# $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xls");
$spreadsheet = $reader->load($filename);
# 甚至可以直接指定reader實現創建 性能又會優於上面一丟丟
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
# 可以額外設定只讀模式,上面也試用,讓工具只讀取數據,不處理樣式,性能會更好
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load($filename);
// $sheet = $spreadsheet->getActiveSheet();
# 或者直接指定序號獲得第一個sheet
$sheet = $spreadsheet->getSheet(2);
# 讀取excel中A1數據,即第一行第一列,返回“姓名”
// $sheet->getCell('A1')->getValue();
# B1 返回“性別”
//$sheet->getCell('B1')->getValue();
# 獲取當前總行數
$rows = $sheet->getHighestRow();
$users = [];
# 一般excel中第一行爲標題,所以實際數據從第二行開始 循環讀取
for($i = 1; $i <= $rows; $i++) {
$temp = [];
$temp['name'] = $sheet->getCell('A' . $i)->getValue();
$temp['sex'] = $sheet->getCell('B' . $i)->getValue();
$temp['age'] = $sheet->getCell('C' . $i)->getValue();
# 防止空行情況
if (!$temp['name']) {
continue;
}
$users[] = $temp;
}
var_dump($users);