Exemple de méthode d'exportation Excel courante en php

韦小宝
Libérer: 2023-03-18 20:42:02
original
2398 Les gens l'ont consulté

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

Il existe de nombreuses méthodes pour exporter Excel en ligne. Pour exporter Excel dans un système CRM ou oa, Comme c'est courant, tous ceux qui ont utilisé cette fonction savent que son opération principale consiste en fait à parcourir la liste de données, puis à ajouter des données aux cellules fixes une par une. Tant que vous le faites une fois, il vous suffit de copier le code correspondant et de le modifier, et la fonction d'exportation vers d'autres endroits sera complétée.

Mais il y aura deux problèmes :

1. Lorsque le champ de données de la liste est modifié, une grande quantité de code doit être modifiée, ce qui est difficile à maintenir et inconfortable à modifier.


2. Lorsque la fonction d'exportation apparaît plusieurs fois, un grand nombre de codes répétitifs et redondants doivent être copiés à plusieurs endroits, ce qui semble inconfortable ; >

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 &#39;&#39;;
 $y = $dec % 26;
 $x = floor($dec / 26);
 return self::toAAA($x - 1) . chr($y + 65);
}
Copier après la connexion


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 &#39;&#39;;
 $y = $dec % 26;
 $x = floor($dec / 26);
 return self::toAAA($x - 1) . chr($y + 65);
}
Copier après la connexion


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


Méthode d'implémentation native d'exportation et de téléchargement PHP Excel

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!