Heim >Backend-Entwicklung >PHP-Tutorial >PHP importiert und exportiert Excel-Dateien
Um Excel-Tabellen zu betreiben, müssen Sie das PHPExcel-Plugin verwenden. Da ich im Allgemeinen das CI-Framework verwende, werde ich es mit dem CI-Framework einführen.
Stellen Sie zunächst die relevanten Dateien von PHPExcel vor:
$this->load->library('PHPExcel/IOFactory'); $this->load->model('search_model');Als nächstes stellen wir vor, wie die Excel-Datei exportiert wird. Zuerst müssen wir ein neues Arbeitsblatt erstellen und es initialisieren:
//新建工作表 $objPHPExcel = new PHPExcel(); // 操作第一个工作表 $objPHPExcel->setActiveSheetIndex(0); // 设置工作薄名称 $objPHPExcel->getActiveSheet()->setTitle("集合"); // 设置默认字体和大小 $objPHPExcel->getDefaultStyle()->getFont()->setName("宋体"); $objPHPExcel->getDefaultStyle()->getFont()->setSize(10);Dann legen Sie den Tabellenkopf fest. Natürlich müssen Sie ihn nicht festlegen. Der erste Parameter der setCellValueByColumnAndRow($col,$row,$name)-Methode ist die zu erstellende Spalte betrieben (der Startpunkt ist 0), und der zweite Parameter ist die Operationszeile (beginnend bei 1), der dritte Parameter ist der Wert, den Sie einstellen möchten:
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, 1, " "); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, 1, "IMSI"); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(2, 1, "IMEI"); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(3, 1, "设备号"); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(4, 1, "号段"); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(5, 1, "归属地"); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(6, 1, "运营商"); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(7, 1, "时间");Nach der Einstellung Beginnen Sie mit der zeilenweisen Zuweisung von Werten in der Kopfzeile:
$row = 2; $i = 0; foreach($data as $item){ $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, $row, $i+1); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, $row, $item['QQ']); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(2, $row, $item['MSN']); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(3, $row, $item['DeviceID']); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(4, $row, $item['RTX']); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(5, $row, $item['Area']); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(6, $row, $item['Type']); $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(7, $row, $item['TimeStamp']); $row++; $i++; }Zum Schluss geben Sie die Datei auf der Seite aus und stellen sie zum Download bereit:
$objWriter = IOFactory::createWriter($objPHPExcel, 'Excel5'); ob_end_clean(); header("Pragma: public"); header("Expires: 0"); header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); header("Content-Type:application/force-download"); header("Content-Type: application/vnd.ms-excel;charset=UTF-8"); header("Content-Type:application/octet-stream"); header("Content-Type:application/download"); header("Content-Disposition:attachment;filename=result.xls"); //定义文件名 header("Content-Transfer-Encoding:binary"); $objWriter->save("php://output");Die Importmethode ist ebenfalls ähnlich. Laden Sie zuerst die Datei in den Hintergrund hoch, rufen Sie den Pfad ab und öffnen Sie dann Excel:
$orig_name = explode('.',$upload_data['orig_name'])[0];//原始文件名 $extend=strrchr ($upload_data['file_name'],'.'); //获取文件类型 $readerType = ($extend == ".xlsx") ? "Excel2007" : "Excel5"; $path = $config['upload_path'].$upload_data['file_name']; //文件路径 $objPHPExcel = new IOFactory(); $objReader = $objPHPExcel::createReader($readerType)->load($path); $sheet = $objReader->getSheet( 0 );
Lesen Sie dann die Daten in einer Schleife und speichern Sie sie in der Datenbank:
$highestRow = $sheet->getHighestRow(); // 取得总行数 但是很多无数据的空白行也读取了,所以未采用此方法 $highestColumn = $sheet->getHighestColumn(); // 取得总列数 $colspan = range( 'A', $highestColumn ); $rowArray = $sheet->getRowDimensions();// 取得总行数 $rowCount = count($rowArray); //循环读取excel文件(因为第一行我一般都加了表头,所以总是从第二行开始读数据) for ( $j = 2; $j <= $rowCount; $j++ ) { $array = array( ); foreach ( $colspan as $value ) { $array[] = $objReader->getActiveSheet()->getCell( $value . $j )->getValue(); } //插入表中 $sql = "insert into im_blacklist(`name`,`MAC`,`IMSI`,`IMEI`,`groupid`) values('".$array[1]."','".$array[2]."',".$array[3].",".$array[4].",".$id.")"; $this->db->query($sql); }Diese Methode bezieht sich jedoch auf die Zeile, in der sich wann der Excel-Cursor befindet Öffnen Sie am besten Excel, bewegen Sie den Cursor in die untere rechte Ecke der Tabelle und schließen Sie dann Excel, um den Lesevorgang durchzuführen. Nur dann können alle Daten korrekt gelesen werden.
Das Obige stellt den Import und Export von Excel-Dateien in PHP vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.