excel导出/保存可参照另一篇博文:PHPExcel----保存/导出excel文档数据【简单实用demo】
首先要有PHPExcel类:传送门
只需要保存其中的Classes即可。
在项目中引用PHPExcel.php
先看看要获取的excel数据源表:
实现代码:
public function getExcelContent(){
//导入PHPExcel
include("./PHPExcel/PHPExcel.php");
//由于是本地开发测试,实用的是本地的文件(尽量不要用中文命名的)
$filePath = "F:\project\build\yonghe_pc\application\Admin\Controller\personnel.xlsx";
//if(file_exists($filePath)){
// echo '文件存在';
// }
$extension = strtolower(pathinfo($filePath, PATHINFO_EXTENSION));//判断导入表格后缀格式
//根据不同的格式采用不同的读取方式
if ($extension == 'xlsx') {
$objReader =\PHPExcel_IOFactory::createReader('Excel2007');
}else if ($extension == 'xls'){
$objReader =\PHPExcel_IOFactory::createReader('Excel5');
}else{
print_r('暂不支持该格式文本导入');
}
$objPHPExcel =$objReader->load($filePath, $encode = 'utf-8');
$sheet =$objPHPExcel->getSheet(0);//激活第一个sheet表
$highestRow = $sheet->getHighestRow();//取得总行数
$highestColumn =$sheet->getHighestColumn(); //取得总列数
//验证表头数据是否对齐
$A1 = $objPHPExcel->getActiveSheet()->getCell("A1")->getValue();
$B1 = $objPHPExcel->getActiveSheet()->getCell("B1")->getValue();
$C1 = $objPHPExcel->getActiveSheet()->getCell("C1")->getValue();
if($A1!='姓名'||$B1!='性别'||$C1!='民族'){
print_r('EXCEL文本数据不对应');
}
for($i=2;$i<=$highestRow;$i++)
{
$row['name'] =$objPHPExcel->getActiveSheet()->getCell("A" .$i)->getValue();
$row['sex'] =$objPHPExcel->getActiveSheet()->getCell("B" .$i)->getValue();
$row['nation'] = $objPHPExcel->getActiveSheet()->getCell("C". $i)->getValue();
$data[] = $row;
}
/**可忽略,为了展示效果*/
header("Content-type: text/html; charset=utf-8");
print_r("行数:{$highestRow}<br>");
print_r("列数:{$highestColumn}<br>");
print_r("表头:{$A1}---{$B1}---{$C1}<br>");
print_r($data);
die;
//获取了Excel的内容,接下来,就是写入数据表,存储啦
}
结果打印
ERRO : Could not open XXX.xls for reading! File does not exist,
解决方法建议:
建议可能的几个出错原因:
1.文件路径 检查xls文件的路径是否正确:file_exists(“path/to/file.xls”);
2.如果你是在本地测试的话,看是否该xls文件被其他软件打开或占用。
3.建议打开本地服务器的xls文件而不是远程服务器上的xls文件。/user/public/docs/filex.xls 而不是http://otherhost.com/path/file.xls
希望对你有帮助。