zoukankan      html  css  js  c++  java
  • phpspreadsheet

    2019-5-9 8:20:07 星期四

    昨天在看PHPExcel的时候, github上作者说已经停止更新了, 推荐使用phpspreadsheet,

    查看了一下官方文档, 功能还挺强大的, 可以读取图表, 还可以读取格中使用了公式表计算的值, 而且是链式操作, 还使用了composer更新

    简单写了一个小demo

    安装

    按照官网的命令,  先通过composer  把phpspreadsheet下载下来, 主要是使用autoload, phpspreadsheet有多层继承,抽象和接口

    1. composer init

    2. composer require phpoffice/phpspreadsheet

    demo

     1 include('D:/server/code/composer/vendor/autoload.php'); //将安装phpspreadsheet后的
     2 
     3 use PhpOfficePhpSpreadsheetIOFactory;
     4 
     5 
     6 $inputFileType = 'Xls';
     7 $inputFileName = 'C:UserszhangzhibinDownloadsPhpSpreadsheet-1.6.0PhpSpreadsheet-1.6.0samplesReadersampleDataexample2.xls';
     8 
     9 
    10 $reader = IOFactory::createReader($inputFileType);
    11 $reader->setReadDataOnly(true); //只读取数据, 不读取其他东西
    12 $worksheetData = $reader->listWorksheetInfo($inputFileName); //获取Excel中的所有表单的统计信息, 并不读取数据
    13 
    14 foreach ($worksheetData as $worksheet) {
    15     echo '表单名' . $worksheet['worksheetName'].'<br>';
    16     echo 'Rows: ' . $worksheet['totalRows'] . ' Columns: ' . $worksheet['totalColumns'].'<br>';
    17     echo 'Cell Range: A1:' . $worksheet['lastColumnLetter'] . $worksheet['totalRows'].'<br>';
    18 }
    19 
    20 //读取表单中的数据
    21 try {
    22     echo '加载前内存使用 '.strval(memory_get_usage(false)).'<br>';
    23     $spreadsheet = IOFactory::load($inputFileName);
    24     echo '加载后内存使用 '.strval(memory_get_usage(false)).'<br>';
    25     
    26     foreach ($spreadsheet->getWorksheetIterator() as $worksheet) {
    27         echo '表格名 - ' . $worksheet->getTitle().'<br>';
    28 
    29         foreach ($worksheet->getRowIterator() as $row) {
    30             echo '    行号 - ' . $row->getRowIndex().' 当前使用内存:'.memory_get_usage(false).'<br>';
    31 
    32             $cellIterator = $row->getCellIterator();
    33             $cellIterator->setIterateOnlyExistingCells(false); // Loop all cells, even if it is not set
    34             foreach ($cellIterator as $cell) {
    35                 if ($cell !== null) {
    36                     //echo '单元格 - ' . $cell->getCoordinate() . ' - ' . $cell->getCalculatedValue().'<br>';
    37                     echo '单元格 - ' . $cell->getCoordinate() . ' - ' . $cell->getValue().'<br>';
    38                 }
    39             }
    40         }
    41     }
    42 } catch (InvalidArgumentException $e) {
    43     echo $e->getMessage();
    44 }
  • 相关阅读:
    Maven的settings.xml配置详解
    Activiti创建表(三)
    解决报错:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized
    解决报错(Could not create connection to database server.)
    Activiti插件安装(二)
    2018年四川理工学院软件工程考试大纲(软件工程概述)
    通过myclipse建立一个简单的Hibernate项目(PS:在单元测试中实现数据的向表的插入)
    MySQL如何永久解决由dos编码格式导致MySQ的显示乱码
    nyoj 209 + poj 2492 A Bug's Life (并查集)
    nyoj 208 + poj 1456 Supermarket (贪心)
  • 原文地址:https://www.cnblogs.com/iLoveMyD/p/10836389.html
Copyright © 2011-2022 走看看