Maison  >  Article  >  développement back-end  >  Comment lire le contenu du tableau en utilisant PHPExcel

Comment lire le contenu du tableau en utilisant PHPExcel

不言
不言original
2018-07-20 17:26:293599parcourir

Comment lire le contenu du tableau en utilisant PHPExcel ? Sans plus tarder, l'article suivant vous donnera une introduction détaillée à la façon dont PHPExcel lit le contenu du tableau.

Introduisez d'abord la classe IOFactory.php

require_once '../PHPExcel/IOFactory.php';
$filePath = "test.xlsx";  // 测试文件

Chargez le fichier de test

  1. $inputFileType = PHPExcel_IOFactory :: identifier( $filePath) Déterminer le type de fichier

  2. $objReader = PHPExcel_IOFactory::createReader($inputFileType); Instancier le type d'objet

  3. $objPHPExcel = $ objReader->load($filePath); Charger le fichier

Ce qui suit détermine principalement les types Excel2007 et Excel5, c'est-à-dire le format xlsx/xlsm/xltx/xltm et xls/xlt fichiers

try {
    $inputFileType = PHPExcel_IOFactory::identify($filePath);
    if ($inputFileType !== "Excel5" && $inputFileType !== "Excel2007" ) {
        unlink($filePath) && str_alert(-1,"请确保导入的文件格式正确!");
    }
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcel = $objReader->load($filePath);
} catch(Exception $e) {
    unlink($filePath) && str_alert(-1,'加载文件发生错误:”'.pathinfo($filePath,PATHINFO_BASENAME).'”: '.$e->getMessage());
    }

Obtenir la feuille de calcul actuelle

$sheet = $objPHPExcel->getSheet(0);
//或者
$sheet = $objPHPExcel->getActiveSheet();

Obtenir le nombre de lignes et de colonnes de la feuille de calcul

$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();

Remarque : Parfois, vous trouverez des lignes qui il y a clairement du contenu dans votre tableau. Il n'y a que 5 lignes dans le décompte, mais le $highestRow obtenu contient 7, 8 lignes ou plus. Cela peut être dû au fait que vous avez accidentellement cliqué sur d'autres lignes lors de l'utilisation de votre formulaire. Bien que le contenu ne soit pas rempli. , getHighestRow peut également être utilisé. Identifiez le nombre de lignes ;
Si vous souhaitez obtenir le nombre de lignes avec du contenu, vous devez utiliser getHighestDataRow et getHighestDataColumn
Les commentaires du code source introduisent la chaîne Numéro de ligne le plus élevé qui contient des données. , c'est-à-dire le numéro de ligne le plus élevé de la chaîne contenant des données.

Le contenu spécifique de la cellule

Les cellules du tableau de type xlsx sont obtenues grâce aux coordonnées de l'axe xy,

peut être obtenu via un

 $sheet->getCell("A1")->getValue();
 $sheet->getCell("B2")->getValue();

similaire Le contenu,
Si vous ne souhaitez pas parcourir les lettres, vous pouvez utiliser la méthode de l'index numérique

  $sheet->getCellByColumnAndRow(0,1);
  $sheet->getCellByColumnAndRow(1,2);

Notez que le le premier paramètre dans les coordonnées commence à 0, 0 représente A, 1 représente B... , le deuxième paramètre commence à 1.
Ce qui suit consiste à parcourir le tableau pour obtenir tout le contenu des cellules :

$dataSet=array();
for ($column = "A"; $column <= $highestColumn; $column++) {//列数是以A列开始
    for ($row = 4; $row <= $highestRow; $row++) { //行数是以第4行开始
        $cell = $sheet->getCell($column . $row)->getValue();
        if($cell instanceof PHPExcel_RichText) { //富文本转换字符串
            $cell = $cell->__toString();
        }
        $dataSet[$row][] = $cell;
    }
}

Parmi eux, la chaîne de conversion de texte enrichi consiste à utiliser l'instance $cell de PHPExcel_RichText pour déterminer s'il s'agit de texte enrichi. Après avoir consulté les informations, j'ai découvert que si la chaîne de votre cellule contient plus de deux polices, elle sera automatiquement définie. sous forme de texte enrichi. À ce stade, vous avez besoin de la conversion __toString()

pour déterminer si la cellule fusionnée se trouve dans le coin supérieur gauche

Lorsque nous avons parcouru la sortie de toutes les cellules, nous avons trouvé. que certaines des cellules fusionnées n'avaient du contenu que dans la coordonnée supérieure gauche et que les autres étaient nulles
Par exemple, A4 et A5 ont été fusionnées en une seule cellule, getCell(" A4") a un contenu normal, mais getCell("A5 ") est nul.
isMergeRangeValueCell peut être utilisé pour déterminer si une cellule spécifique se trouve dans le coin supérieur gauche

$sheet->getCell('A' . $row)->isMergeRangeValueCell()

quand $row Lorsqu'il vaut 4, il renvoie vrai et lorsqu'il vaut 5 , il renvoie false

Convertir l'heure

Pour obtenir le contenu du format d'heure dans le tableau, vous avez besoin de PHPExcel_Shared_Date::ExcelToPHP() pour le convertir en une heure pouvant être reconnue par PHP Format

date('Y-m-d',PHPExcel_Shared_Date::ExcelToPHP($sometime);

Recommandations associées :

Exemple de phpexcel lisant le temps de table Excel                                    Lire l'unité de temps de table Excel Grille

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