使用composer 安裝 PHPExcel
composer require phpoffice/phpexcel
如果在安裝phpexcel 出現(xiàn) composer install 的 404問題 錯(cuò)誤
composer self-update
導(dǎo)入
1-2 上代碼thinkphp6
public function excelUpload()
{
//接收文件
$file = $this->request->file('file');
//獲取文件后綴
$ext = $file->extension();
//判斷時(shí)候是限制的文件格式
$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();上傳文件的臨時(shí)路徑
// 類庫 解析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 = [];
// 將數(shù)組重組
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('導(dǎo)入失斣肷场户秤!');
}
$this->success('導(dǎo)入成功睬关!');
}
2.導(dǎo)出
2-1 編寫導(dǎo)出的PHP代碼
public function index()
{
$file_name = date('Ymd_His') . '_' . rand(1111, 9999);
$objPHPExcel = new \PHPExcel();
$objPHPExcel->getActiveSheet()->setTitle("demo"); //給當(dāng)前活動(dòng)sheet設(shè)置名稱
$res = new Users();
$result = $res->getExcecl(); //這里是查數(shù)據(jù),就不一一寫了窑滞。[懶惰]
// 設(shè)置頭信息
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1','ID')
->setCellValue('B1','名稱')
->setCellValue('C1','密碼')
->setCellValue('D1','創(chuàng)建時(shí)間')
->setCellValue('E1','修改時(shí)間')
->setCellValue('F1','刪除時(shí)間')
->setCellValue('G1','狀態(tài)');
$num = 2;
foreach ($result as $k => $v) {
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A' . $num, $v['id']) //這里是對應(yīng)數(shù)據(jù)庫字段名
->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里會(huì)自動(dòng)引入下載模塊的命名空間,composer下的相關(guān)文件都會(huì)改變葛假,并不是簡單的將phpoffice文件下載放入vender障陶,就直接可以使用 use PHPExcel; 引入PHPExcel類,只有通過composer安裝的phpoffice 聊训,才能直接通過 use PHPExcel引入PHPExcel類
好了 TP6的PHPExcel導(dǎo)入導(dǎo)出就是這么簡單抱究,希望對小伙伴們有所幫助_