Maison >développement back-end >tutoriel php >Exemple de méthode d'exportation Excel courante en php
Cet article vous présente principalement les informations pertinentes sur la méthode d'exportation Excel courante dans php La méthode présentée dans l'article sera une certaine référence que tout le monde pourra apprendre ou utiliser php La valeur de l'apprentissage, amis qui ont besoin d'apprendre PHP comment exporter Excel, veuillez suivre l'éditeur pour apprendre ensemble.
1. Méthodes d'exportation courantes
Mais il y aura deux problèmes :
Par conséquent, il est nécessaire d'unifier un export Excel. Lorsque vous utilisez cette méthode, il vous suffit de transmettre l'en-tête de données, le nom du champ d'en-tête, la liste de données et le nom de la table de données à exporter vers Excel.
2. Utilisez la méthode d'exportation commune
Comme le montre la figure ci-dessous, tant que 4 paramètres sont transmis, l'exportation peut être complétée, l'utilisation et la maintenance deviennent beaucoup plus simples.
D'accord, l'objectif a été clarifié, la prochaine étape est d'implémenter le code.
De toute évidence, la plus grande difficulté dans la réalisation de cette fonction est de calculer automatiquement la valeur des coordonnées de chaque champ dans Excel (comme A1) en fonction de l'index d'une seule donnée et de l'ordre des champs d'en-tête. B3).
Analysons ensuite les coordonnées des cellules d'Excel. À partir de A1, augmentez la valeur des nombres verticalement et augmentez les lettres horizontalement. Lorsque les lettres horizontales deviennent Z, la lettre suivante est AA, puis AB, .... , ZZ, ..., AAA...
Dans ce cas, on sait que la coordonnée verticale est simple et peut être calculée en fonction de la valeur d'index de chaque donnée. La chose difficile est l'horizontale. coordonnées, comment calculer ? Après une analyse minutieuse des coordonnées horizontales, nous pouvons constater qu’il s’agit d’un système alphanumérique de type hexadécimal. Si A est considéré comme 0, alors Z représente 25. Mais ce type de nombre est différent de nos nombres hexadécimaux, octaux, etc. communs, car lorsque Z est porté, le nombre suivant n'est pas BA, mais AA. Dans les systèmes de base courants, par exemple, si le système décimal porte 9, il devient 10 et non 00 ; si le système hexadécimal porte 0xF, il devient 0x10 et non 0x00.
Vous pouvez donc vous référer à l'algorithme de conversion de base, puis le modifier pour obtenir la méthode de calcul de la coordonnée horizontale d'Excel (décimal en base pseudo-26) :
//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); }
Enfin, le code complet est joint
Le framework est Yii2, composant d'exportation Excel pour moonlandsoft/yii2-phpexcel ;
D'autres comme >3 Exemple de résultats d'exportation
Résultats d'exportation :
//导出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); }
Ce qui précède représente tout le contenu de cet article, j'espère que cela aidera tout le monde !
Recommandations associées :
Comment enregistrer des images dans EXCEL avec PHP
Guide de développement rapide d'exportation PHP EXCEL
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!