thinkphp6.0导出/导入excel

1-composer下载安装

composer require phpoffice/phpspreadsheet

注意:composer会提示要用到2.0以上版本。

说明:在安装完成后,根目录的conposer.json里面可以看到

2-方法里引用

use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Csv;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

3-使用方法

	public function exportExcel(){
		

	        $data =  Cache('excelText');//这里是数据
	        // 实例化
	        $spreadsheet = new Spreadsheet();
	        // 获取活动单元格
	        $sheet = $spreadsheet->getActiveSheet();
	 
	        // 获取单元格
	        $cellA = $sheet->getCell('A1');
	        // 设置单元格的值
	        $cellA->setValue('ID');
	        // 设置 A 列 列宽
	        $sheet->getColumnDimension('A')->setWidth(10);
	        // 设置第一行 行高
	        $sheet->getRowDimension(1)->setRowHeight(20);
	 
	        $cellB = $sheet->getCell('B1');
	        $cellB->setValue('站点');
	        $sheet->getColumnDimension('B')->setWidth(20);
	 
	        $cellC = $sheet->getCell('C1');
	        $cellC->setValue('名称');
	        $sheet->getColumnDimension('C')->setWidth(20);
	 
	        $cellD = $sheet->getCell('D1');
	        $cellD->setValue('单价');
	        $sheet->getColumnDimension('D')->setWidth(10);
	 
	        $cellE = $sheet->getCell('E1');
	        $cellE->setValue('数量');
	        $sheet->getColumnDimension('E')->setWidth(10);
	 
	        $cellE = $sheet->getCell('F1');
	        $cellE->setValue('总价');
	        $sheet->getColumnDimension('F')->setWidth(10);
	 
	        $cellF = $sheet->getCell('G1');
	        $cellF->setValue('时间');
	        $sheet->getColumnDimension('G')->setWidth(30);

	 
	 
	        // 设置样式 标题
	        $styleArray = [
	            'alignment' => [
	                'horizontal' => 'center', //水平居中
	                'vertical' => 'center', //垂直居中
	            ],
	            'font' => [
	                'name' => '黑体',
	                'bold' => false,
	                'size' => 10
	            ]
	        ];
	        // 设置样式 正文
	        $styleArrayBody = [
	            'alignment' => [
	                'horizontal' => 'center', //水平居中
	                'vertical' => 'center', //垂直居中
	            ],
	            'font' => [
	                'name' => '宋体',
	                'bold' => false,
	                'size' => 10
	            ]
	        ];
	        // 应用样式
	        $sheet->getStyle('A1')->applyFromArray($styleArray);
	        $sheet->getStyle('B1')->applyFromArray($styleArray);
	        $sheet->getStyle('C1')->applyFromArray($styleArray);
	        $sheet->getStyle('D1')->applyFromArray($styleArray);
	        $sheet->getStyle('E1')->applyFromArray($styleArray);
	        $sheet->getStyle('F1')->applyFromArray($styleArray);
	        $sheet->getStyle('G1')->applyFromArray($styleArray);

	        // 从 A2 开始填充数据
	        foreach ($data as $k => $v) {
	            $n = $k + 2;
	            // 获取单元格
	            $cellA = $sheet->getCell('A' . $n);
	            // 设置单元格的值
	            $cellA->setValue($v['order_id']);
	 
	            $cellB = $sheet->getCell('B' . $n);
	            $cellB->setValue($v['order_room']);
				
				$cellC = $sheet->getCell('C' . $n);
				$cellC->setValue($v['order_product']);
				
				$cellD = $sheet->getCell('D' . $n);
				$cellD->setValue($v['order_money']);
				
				$cellE = $sheet->getCell('E' . $n);
				$cellE->setValue($v['order_product_mun']);
				
				$cellF = $sheet->getCell('F' . $n);
				$cellF->setValue($v['order_money_all']);
				
				$cellG = $sheet->getCell('G' . $n);
				$cellG->setValue($v['create_time']);
	 

	        }
	 
	        $file_name = '导出数据.xlsx';
	        // 实例化导出类
	        header('Content-Type:application/vnd.ms-excel');
	        header('Content-Disposition:attachment;filename=' . $file_name);
	        header('Cache-Control:max-age=0');
	 
	        $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
	        $writer->save('php://output');
	    }

}

下面我们来操作:导入文件

		$date = request()->param();
	
		$objReader = IOFactory::createReader('Xlsx');
		$objPHPExcel = $objReader->load(root_path() . '/public/'.$date['text']);//传入的文件
		$sheet = $objPHPExcel->getSheet(0);   //excel中的第一张sheet
		$highestRow = $sheet->getHighestRow();       // 取得总行数
		$highestColumn = $sheet->getHighestColumn();   // 取得总列数
		\PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn);
		$lines = $highestRow - 1;
		if ($lines <= 0) {
			return json(['code' => 0, 'message' => '没有数据!']);
		}
		$data = array();
		for ($j = 2; $j <= $highestRow; $j++) {
			$data[$j - 2] = [
			  'product_model'      => trim($objPHPExcel->getActiveSheet()->getCell("A" . $j)->getValue()),//数据匹配生成缓存数据
		   ];
		}	
		
	
			
		
	
		 echo '<pre>';
	    $json_str = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
		 页面输出
		 echo '<pre>';

猜你喜欢

转载自blog.csdn.net/munchmills/article/details/130843083