Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel einer gängigen Excel-Exportmethode in PHP

Beispiel einer gängigen Excel-Exportmethode in PHP

韦小宝
韦小宝Original
2017-12-30 20:16:192400Durchsuche

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 gibt viele Methoden, Excel online zu exportieren. Wie üblich weiß jeder, der diese Funktion ausgeführt hat, dass ihre Hauptoperation tatsächlich darin besteht, die Datenliste zu durchlaufen und dann nacheinander Daten zu festen Zellen hinzuzufügen. Solange Sie dies einmal tun, müssen Sie nur den relevanten Code kopieren und ändern, und die Exportfunktion an anderen Stellen wird abgeschlossen.

Es treten jedoch zwei Probleme auf:

1. Wenn das Listendatenfeld geändert wird, muss eine große Menge Code geändert werden schwierig zu warten und umständlich zu ändern. 2. Wenn die Exportfunktion mehrmals angezeigt wird, muss eine große Anzahl sich wiederholender und redundanter Codes an mehreren Stellen kopiert werden >

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.

2. Verwenden Sie die allgemeine Exportmethode

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 &#39;&#39;;
 $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 &#39;&#39;;
 $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-Schnellentwicklungsanleitung


Das 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn