使用第三方扩展PHPExcel读取excel并显示出数据,
代码如下:(Thinkphp5示例)
//导入excel中的积分
public function import_excel()
{
Loader::import('PHPExcel.Classes.PHPExcel'); //手动引入PHPExcel.php
Loader::import('PHPExcel.Classes.PHPExcel.IOFactory'); //引入IOFactory.php 文件里面的PHPExcel_IOFactory这个类
$inputFileName = 'e:/23333.xls';
date_default_timezone_set('PRC');
// 读取excel文件
try {
$inputFileType = \PHPExcel_IOFactory::identify($inputFileName);
$objReader = \PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {
exit('加载文件发生错误:['.pathinfo($inputFileName,PATHINFO_BASENAME).']'.$e->getMessage());
}
// 确定要读取的sheet
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
// 获取一行的数据
for ($row = 1; $row <= $highestRow; $row++){
// Read a row of data into an array
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
//这里得到的rowData都是一行的数据,得到数据后自行处理,我们这里只打出来看看效果
print_r($rowData);
echo '
';
}
}
最后结果:
注:PHPExcel官方已经不再维护,新项目推荐使用PhpSpreadsheet来操作excel。
在CSDN上也发现一个使用PHPExcel:原始链接:https://blog.csdn.net/ning521513/article/details/55257925 ,原版有错误,我给修正了一下:
public function abc()
{
$uploadfile = 'E:/000111.xls';
if (!file_exists($uploadfile)) {
$this->notfound();
}
$ext = substr(strstr($uploadfile, '.'), 1);
require './extend/PHPExcel/Classes/PHPExcel.php';
//require './extend/PHPExcel/Classes/PHPExcel/IOFactory.php';
if($ext=='xlsx'||$ext=='xls' ){
$reader = \PHPExcel_IOFactory::createReader('Excel5'); // 读取 excel 文档
}else if( $ext=='csv' ){
$reader = \PHPExcel_IOFactory::createReader('CSV'); // 读取 excel 文档
}else{
die('Not supported file types!');
}
$PHPExcel = $reader->load($uploadfile); // 文档名称
$objWorksheet = $PHPExcel->getActiveSheet();
$highestRow = $objWorksheet->getHighestRow(); // 取得总行数
$highestColumn = $objWorksheet->getHighestColumn(); // 取得总列数
//echo $highestRow.$highestColumn;
// 一次读取一列
$res = array();
for ($row = 1; $row <= $highestRow; $row++) {
for ($column = 'A'; $column <= $highestColumn; $column++) {
$ccc = ord($column) - 65;
$val = $objWorksheet->getCellByColumnAndRow($ccc, $row)->getValue();
$res[$row-1][$column] = $val;
}
}
dd($res);
}
算是一个发散思维读取excel内容的方法吧。还有现在TP5都支持命名空间了,居然还在用require。
建议以后都使用命名空间引入,少用require。 |