使用composer 安装 PHPExcel
composer require phpoffice/phpexcel
如果在安装phpexcel 出现 composer install 的 404问题 错误
composer self-update
导入
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导入导出就是这么简单,希望对小伙伴们有所帮助_