Heim >Backend-Entwicklung >PHP-Tutorial >Beispiel einer gängigen Excel-Exportmethode in PHP
Dieser Artikel führt Sie hauptsächlich in die relevanten Informationen über die gängige Excel-Exportmethode in php ein. Die im Artikel vorgestellte Methode ist eine sichere Referenz für alle, die php Der Wert des Lernens, Freunde, die PHP lernen müssen, wie man Excel exportiert, folgen Sie bitte dem Editor, um gemeinsam zu lernen.
1. Gängige Exportmethoden
Es treten jedoch zwei Probleme auf:
Daher ist es notwendig, einen Excel-Export zu vereinheitlichen. Wenn Sie diese Methode verwenden, müssen Sie nur den Datenheader, den Header-Feldnamen, die Datenliste und den Datentabellennamen für den Export nach Excel übergeben.
Wie in der Abbildung unten gezeigt, solange 4 Parameter übergeben werden, Der Export kann abgeschlossen werden, Verwendung und Wartung werden viel einfacher.
Okay, das Ziel ist geklärt, der nächste Schritt ist die Implementierung des Codes.
Die größte Schwierigkeit bei der Realisierung dieser Funktion besteht offensichtlich darin, den Koordinatenwert jedes Felds in Excel (z. B. A1) basierend auf dem Index eines einzelnen Datenelements und der Reihenfolge der Headerfelder automatisch zu berechnen. B3).
Dann analysieren wir die Zellkoordinaten von Excel. Erhöhen Sie ausgehend von A1 den Wert der Zahlen vertikal und erhöhen Sie die Buchstaben horizontal. Wenn sich die horizontalen Buchstaben zu Z ändern, ist der nächste Buchstabe AA, dann AB, .... , ZZ, ..., AAA...In diesem Fall wissen wir, dass die vertikale Koordinate einfach ist und basierend auf dem Indexwert jedes Datenelements berechnet werden kann. Das Schwierige ist die horizontale Koordinate, wie berechnet man? Nach sorgfältiger Analyse der horizontalen Koordinaten können wir feststellen, dass es sich um ein hexadezimales alphanumerisches System handelt. Wenn A als 0 betrachtet wird, stellt Z 25 dar. Aber diese Art von Zahl unterscheidet sich von unserer üblichen Hexadezimalzahl, Oktalzahl usw., denn wenn Z übertragen wird, ist die nächste Zahl nicht BA, sondern AA. Wenn das Dezimalsystem beispielsweise 9 trägt, wird es zu 10 und nicht zu 00; wenn das Hexadezimalsystem 0xF trägt, wird es zu 0x10 und nicht zu 0x00. Daher können Sie sich auf den Algorithmus der Basiskonvertierung beziehen und ihn dann ändern, um die Methode zur Berechnung der horizontalen Koordinate von Excel (Dezimal zur Pseudo-26-Basis) zu erhalten://AAA转换 public static function toAAA($dec) { if ($dec < 0) return ''; $y = $dec % 26; $x = floor($dec / 26); return self::toAAA($x - 1) . chr($y + 65); }
Schließlich ist der vollständige Code beigefügt
Das Framework ist Yii2, Excel-Exportkomponente für Moonlandsoft/yii2-phpexcel;
Andere wie >3.Exportergebnisse:
Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, er wird allen helfen!
//导出xls public static function exportXls($array) { set_time_limit(0); include(Url::to('@vendor/moonland/phpexcel/PHPExcel.php')); include(Url::to('@vendor/moonland/phpexcel/PHPExcel/Writer/Excel2007.php')); $titles = $array['titles']; $fields = $array['fields']; $list = $array['list']; $name = $array['name']; $count = count($titles); $keys = [];//A=>chr(65) foreach ($titles as $k => $v) { $keys[] = self::toAAA($k); } $objPHPExcel = new \PHPExcel(); $objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel); $objPHPExcel->setActiveSheetIndex(0); $activeSheet = $objPHPExcel->getActiveSheet(); $activeSheet->setTitle($name); $activeSheet->getStyle("A1:{$keys[$count-1]}1")->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $activeSheet->mergeCells("A1:{$keys[$count-1]}1"); $activeSheet->setCellValue('A1', $name); //设置title,样式 foreach ($titles as $key => $title) { $activeSheet->setCellValue($keys[$key] . '2', $title); $activeSheet->getColumnDimension($keys[$key])->setWidth(20); $activeSheet->getRowDimension(($key + 1))->setRowHeight(18); } $i = 3; foreach ($list as &$item) { foreach ($keys as $k => $v) { $val = isset($item[$fields[$k]]) ? $item[$fields[$k]] . ' ' : ' '; $activeSheet->setCellValue($v . $i, $val); } $i++; } $fileName = $name . "_" . date('Y_m_d_His') . '.xlsx'; header("Cache-Control: public"); header("Pragma: public"); header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:attachment;filename=" . iconv("utf-8", "GB2312//TRANSLIT", $fileName)); header('Content-Type:APPLICATION/OCTET-STREAM'); ob_clean(); ob_start(); $objWriter->save('php://output'); ob_end_flush(); } //AAA转换 public static function toAAA($dec) { if ($dec < 0) return ''; $y = $dec % 26; $x = floor($dec / 26); return self::toAAA($x - 1) . chr($y + 65); }Verwandte Empfehlungen:
So speichern Sie Bilder in Excel mit PHP
Native Implementierungsmethode für den PHP-Export und Download von Excel
PHP-Export-EXCEL-SchnellentwicklungsanleitungDas obige ist der detaillierte Inhalt vonBeispiel einer gängigen Excel-Exportmethode in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!