tp文件上传、表格转数组
tp3和tp5,两个版本的读取表格文件是一样的:
import("Org.Util.PHPExcel");
import("Org.Util.PHPExcel.IOFactory");
//获取文件类型 $file_path是文件的路径
$inputFileType = \PHPExcel_IOFactory::identify($file_path);
//根据类型调用不同的读取方法
if ($inputFileType == 'CSV') {
$objReader = \PHPExcel_IOFactory::createReader('CSV');
$objPHPExcel = $objReader->setInputEncoding('GBK')->load($file_path);
} else {
$objReader = \PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($file_path, $encode = 'utf-8');
}
$sheet = $objPHPExcel->getSheet(0);
//取得总行数
$highestRow = $sheet->getHighestRow();
//取得总列数
$highestColumn = $sheet->getHighestColumn();
//视情况限制
if($highestRow>101) {
returnAjax([],101,'不能超过100条');
}
//自定义的数组下标
$field = ['id','sex','name','phone'];
//设置取出的表格列
$cellName = array('A', 'B', 'C', 'D');
//此处跳过了表头
for ($i = 2; $i < $highestRow + 1; $i++) {
$arr = [];
foreach ($cellName as $key => $value) {
//读取到数组中,此处对应上面的自定义数组下标
$arr[$field[$key]] = $objPHPExcel->getActiveSheet()->getCell($value . $i)->getValue();
//未定义则从0开始
//$arr[$key] = $objPHPExcel->getActiveSheet()->getCell($value . $i)->getValue();
}
if(!empty($arr)){
$data[] = $arr;
}
}
return $data;
上传文件:
tp3:https://www.kancloud.cn/manual/thinkphp/1876
示例:
//实例化上传类 upload类默认获取$_FILES $upload = new \Think\Upload(); //设置附件上传大小 $upload->maxSize = 3145728 ; //设置附件上传类型 $upload->exts = array('xls'); //设置附件上传根目录 $upload->rootPath = './upload/'; //设置附件上传(子)目录 $upload->savePath = 'date/'; //上传文件 $info = $upload->upload(); //获取路径 $file_path = $upload->rootPath.$info['file']['savepath'].$info['file']['savename'];
tp5:https://www.kancloud.cn/manual/thinkphp5/155159
示例:
$file = request()->file('file'); $info = $file->rule('date')->move('./upload'); // 后缀 echo $info->getExtension(); // 路径 echo $info->getSaveName(); // 文件名 echo $info->getFilename(); $file_path = './upload/'.$info->getSaveName();
上传文件建议去看官方文档,读取文档的注意事项:
iconv('gb2312', 'utf-8', $val) 解析中文乱码

按照上面的读取方式,以上九种情况中,csv格式转xlsx格式读取会报错,其他都没问题。
如果对你有帮助,希望可以点下推荐。

浙公网安备 33010602011771号