ThinkPHP6如何用PHPExcel进行数据的导入导出
使用composer 安装 PHPExcel
composer require phpoffice/phpexcel
如果在安装phpexcel 出现 composer install 的 404问题 错误

则只需要更新一下composer 就好。更新命令
composer self-update
导入
1-1 准备一个Excel表格

1-2 上代码thinkphp6
public function excelUpload()
{
//接收文件
$file = $this->request->file( file );
//获取文件后缀
$ext = $file->extension();
//判断时候是限制的文件格式
$ext_arr = [ xlsx , xls , csv ];
if (!in_array($ext, $ext_arr)) {
$this->error( 文件格式有误 );
}
if ($ext == xls ) {
$type = Excel5 ;
} elseif ($ext == xlsx ) {
$type = Excel2007 ;
} elseif ($ext == csv ){
$type = csv ;
}
// $file->getPathname();上传文件的临时路径
// 类库 解析excel
$reader = PHPExcel_IOFactory::createReader($type);
$objData = $reader->load($file->getPathname(), $encode = utf-8 );
$excel_array = $objData->getsheet(0)->toArray();
//删除表格第一行
unset($excel_array[0]);
$i = 0;
$insertData = [];
// 将数组重组
foreach ($excel_array as $key => $value) {
$insertData[$i][ catid ] = 34;
$insertData[$i][ createtime ] = time();;
$insertData[$i][ updatetime ] = time();
$insertData[$i][ cph ] =$value[0];
$insertData[$i][ dw ] = $value[1];
$insertData[$i][ rymc ] = $value[2];
$insertData[$i][ sfzh ] = $value[3];
$insertData[$i][ bz ] = $value[4];
$insertData[$i][ qx ] = $value[5];
$i++;
}
// dump($insertData);
// exit();
$result= Db::name( carshop )->data($insertData)->insertAll();;
if ($result === false) {
$this->error( 导入失败! );
}
$this->success( 导入成功! );
}
2.导出
2-1 编写导出的PHP代码
public function index()
{
$file_name = date( Ymd_His ) . _ . rand(1111, 9999);
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setTitle("demo"); //给当前活动sheet设置名称
$res = new Users();
$result = $res->getExcecl(); //这里是查数据,就不一一写了。[懒惰]
// 设置头信息
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue( A1 , ID )
->setCellValue( B1 , 名称 )
->setCellValue( C1 , 密码 )
->setCellValue( D1 , 创建时间 )
->setCellValue( E1 , 修改时间 )
->setCellValue( F1 , 删除时间 )
->setCellValue( G1 , 状态 );
$num = 2;
foreach ($result as $k => $v) {
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue( A . $num, $v[ id ]) //这里是对应数据库字段名
->setCellValue( B . $num, $v[ name ])
->setCellValue( C . $num, $v[ pass ])
->setCellValue( D . $num, $v[ create_time ])
->setCellValue( E . $num, $v[ update_time ])
->setCellValue( F . $num, $v[ delete_time ])
->setCellValue( G . $num, $v[ status ]);
$num++;
}
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, Excel5 );
header( Content-Type: application/vnd.ms-excel );
header("Content-Disposition: attachment;filename=".$file_name.".xls");
header( Cache-Control: max-age=0 );
header( Cache-Control: max-age=1 );
header ( Expires: Mon, 26 Jul 1997 05:00:00 GMT ); // Date in the past
header ( Last-Modified: .gmdate( D, d M Y H:i:s ). GMT ); // always modified
header ( Cache-Control: cache, must-revalidate ); // HTTP/1.1
header ( Pragma: public ); // HTTP/1.0
$objWriter->save("php://output");//输出文件
}
注意
compser安装phpexcle之后,composer里会自动引入下载模块的命名空间,composer下的相关文件都会改变,并不是简单的将phpoffice文件下载放入vender,就直接可以使用 use PHPExcel; 引入PHPExcel类,只有通过composer安装的phpoffice ,才能直接通过 use PHPExcel引入PHPExcel类
好了 TP6的PHPExcel导入导出就是这么简单,希望对小伙伴们有所协助_
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...

