听说PHP导入导出Excel时,一般不会使用PHP自带的Excel功能,而是使用框架里面的。
以下是对于laravel导入导出Excel的简单使用介绍。
以“导入Excel表,把表里的信息保存到数据库,再把表里的信息以Excel格式导出“为例子:
在namespace下加一句use Excel;
1、导入Excel文件,那就必须先上传Excel文件,一般是前端传递的方式或直接打开文件,
$file = Input::file("file_name"); //获取前端传递进来的Excel文件,用Inpu::file()t时需添加use Illuminate\Support\Facades\Input;
直接打开文件的话使用file_get_contents("path"),大概……此时得到是文件的字符串,需转成数组格式。
2、使用$file = Input::file("file_name"); 获取到Excel文件后,需要把文件保存起来。
$entension = $file->getClientOriginalExtension(); //上传文件的后缀
$tabl_name = date('YmdHis') . mt_rand(100, 999); //命名用,可无视
$newName = iconv('UTF-8', 'GBK', $tabl_name) . '.' . $entension;//命名用,可无视
$move_file = $file->move(base_path() . '/public/excel/', $newName); 移动文件,也就是把文件保存起来
$new_path = base_path() . '/public/excel/' . $newName; 获取保存好文件的路径
如果以上方法报错,那就用别的方式保存文件,最重要是要获取保存后文件的路径
3、获取Excel表里面的信息。
Excel::load($new_path, function ($reader) use ($new_path) {
$reader = $reader->getSgeet(0); //获取Excel里的第几张表,0为第一张表
unlink($new_path); //删除保存起来的Excel文件,这个看个人需求是否要删除
$data = $reader->toArray(); //获取表中的数据,得到的是数组格式
//此时可以对信息$data做检测判断,并保存到数据库里
……
});
注:获取到Excel信息之后的操作必须在闭包函数内完成,大概……
4、以Excel格式导出数据信息
要以Excel格式导出数据,这数据必须是二维数组的形式,如:
$data = array();
$data[0] = {'name','sex','age'};
$data[1] = {'tom', 'man',17};
$data[2] = {'jenny', 'women', 16};
那么导出Excel时,表里对应的是
name sex age
tom man 17
jenny women 16
导出的方法
Excel::create('样板导出', function ($excel) use ($data) {
$excel->sheet('biaodan1_name', function ($sheet) use ($data) {
$sheet->rows($data);
$sheet->setWidth(array('A' => 40, 'B' => 10)); //设置列宽
$sheet->cell('A2:B' . count($cellData4), function ($cell) {
$cell->setAlignment('left'); //设置字体左对齐
});
});
//要导出多个表单,只需$excel->sheet多次就可以
})->export('xlsx');
导出时听说要用get方式请求,不知道原因,但能导出就行了