使用php的file_get_contents()方法直接读取excel文件,将获得一个excel内容的字符串,然后根据换行进行打散为数组,再进行逗号分割,结果就是一个数组,可以进行任何操作。导出应该也可以使用这种方法,不知道性能是否比使用扩展包要快,还没有实践过。
/**
* 下面是使用laravel框架的示例
*/
if ($request->isMethod('POST')) {
$file=$request->file('file');
if (!$file->isValid()) {
return response()->json([
'code' => 1,
'msg' => "上传文件不合法"
]);
}
//获取文件名称
$filename = $file->getClientOriginalName();
if (empty($filename)) {
$this->err = '未找到文件名称';
return false;
}
if (!in_array($file->getClientOriginalExtension(),['csv','xlsx','xls'])) {
return response()->json([
'code' => 1,
'msg' => "只支持文件格式('csv','xlsx','xls')"
]);
}
$data = [];
$content = file_get_contents($file->getRealPath());
$fileType = mb_detect_encoding($content , array('UTF-8','GBK','LATIN1','BIG5'));//获取当前文本编码格式
$content = mb_convert_encoding($content ,'utf-8' , $fileType);
$strs = explode("\n", $content);
array_pop($strs);
array_shift($strs);
foreach ($strs as $key => $v) {
$res = explode(',',$v);
//TODO 进行相关操作
dump($res);
}
return response()->json([
'code' => 0,
'msg' => '成功',
'data' => $data
]);