Maison  >  Article  >  développement back-end  >  Comment générer et lire des fichiers Excel en php

Comment générer et lire des fichiers Excel en php

墨辰丷
墨辰丷original
2018-06-01 09:23:441761parcourir

La génération et la lecture de rapports sont souvent utilisées dans le contexte de gestion du site Web. CSV et Excel sont des formats de rapport couramment utilisés. Cet article présente la génération et la lecture de fichiers Excel en PHP. Les amis qui en ont besoin peuvent venir apprendre. à ce sujet.

Les tableaux sont souvent générés sur les sites Web. CSV et Excel sont tous deux des formats de rapport couramment utilisés. Si vous avez des questions, je publierai ici quelques exemples CSV l'un après l'autre. utiliser PHP. Générer et lire des fichiers Excel.

Pour exécuter la fonction suivante, vous devez d'abord introduire une bibliothèque de classes : PHPExcel. PHPExcel est une puissante bibliothèque de classes PHP utilisée pour lire et écrire différents formats de fichiers, tels qu'Excel 2007, le format PDF, HTML. format, etc. Cette bibliothèque de classes est basée sur OpenXML et PHP de Microsoft. Elle fournit un support puissant pour Excel, tel que la configuration des classeurs, des styles de police, des images, des bordures, etc. Voyons comment l'écrire.

Voyons d'abord comment générer un fichier Excel :

La fonction de la fonction arrayToExcel dans le code ci-dessous est de générer un fichier Excel à partir d'un fichier bidimensionnel tableau de données et enregistré sur le serveur.

require_once 'Classes/PHPExcel/Reader/Excel2007.php';
require_once 'Classes/PHPExcel/Reader/Excel5.php';
include 'Classes/PHPExcel/IOFactory.php';
function arrayToExcel($data){
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setTitle('firstsheet');
$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial');
$objPHPExcel->getDefaultStyle()->getFont()->setSize(10);
//add data
$i = 2;
foreach ($data as $line){
$objPHPExcel->getActiveSheet()->setCellValue('A'.$i, $line['From']);
$objPHPExcel->getActiveSheet()->getCell('A'.$i)->setDataType('n');
$objPHPExcel->getActiveSheet()->setCellValue('B'.$i, $line['To']);
$objPHPExcel->getActiveSheet()->getCell('B'.$i)->setDataType('n');
$i++;
}
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$file = 'excel.xls';
$objWriter->save($file);
}

Si vous ne souhaitez pas l'enregistrer sur le serveur et souhaitez le télécharger directement sur le client après génération, vous pouvez ajouter ce qui suit lors de la sortie du fichier Le code sans utiliser $objWriter->save($file);

est le suivant :

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-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");
header('Content-Disposition:attachment;filename="excel.xls"');
header("Content-Transfer-Encoding:binary");
$objWriter->save('php://output');

Regardons un exemple de lecture du contenu d'un fichier Excel :

La fonction excelToArray dans le code ci-dessous consiste à réorganiser le contenu d'un fichier Excel dans un tableau .

Le code est le suivant :

require_once 'Classes/PHPExcel.php';
require_once 'Classes/PHPExcel/IOFactory.php';
function excelToArray($file){
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($file);
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$excelData = array();
for ($row = 2; $row <= $highestRow; ++$row) {
for ($col = 0; $col <= $highestColumnIndex; ++$col) { $excelData[$row][] = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
}
}
return $excelData;
}

Approche simplifiée

Le code est le suivant :

<?php
/**
 *
 * @copyright 2007-2012 Xiaoqiang.
 * @author Xiaoqiang.Wu <jamblues@gmail.com>
 * @version 1.01
 */
error_reporting(E_ALL);
date_default_timezone_set(&#39;Asia/ShangHai&#39;);
 
/** PHPExcel_IOFactory */
require_once &#39;../Classes/PHPExcel/IOFactory.php&#39;; 
// Check prerequisites
if (!file_exists("31excel5.xls")) {
  exit("not found 31excel5.xls.n");
}
$reader = PHPExcel_IOFactory::createReader(&#39;Excel5&#39;); //设置以Excel5格式(Excel97-2003工作簿)
$PHPExcel = $reader->load("31excel5.xls"); // 载入excel文件
$sheet = $PHPExcel->getSheet(0); // 读取第一??工作表
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumm = $sheet->getHighestColumn(); // 取得总列数
 
/** 循环读取每个单元格的数据 */
for ($row = 1; $row <= $highestRow; $row++){//行数是以第1行开始
  for ($column = &#39;A&#39;; $column <= $highestColumm; $column++) {//列数是以A列开始
    $dataset[] = $sheet->getCell($column.$row)->getValue();
    echo $column.$row.":".$sheet->getCell($column.$row)->getValue()."<br />";
  }
} 
?>

Résumé : Ce qui précède est l'intégralité du contenu de cet article, j’espère qu’il pourra aider l’apprentissage de chacun.

Recommandations associées :

phpRéaliser la fonction de paiement en face-à-face Alipay (scan QR code paiement)

Nouveau projet FTP de PHPStrom et explication graphique détaillée des opérations en ligne

phpMise en œuvre de la fonction de paiement natif WeChat (paiement par scan QR code)

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!

Déclaration:
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