首页 > 编程语言 >禅道二次开发(四):集成PhpSpreadsheet解析Excel文件

禅道二次开发(四):集成PhpSpreadsheet解析Excel文件

时间:2022-08-30 21:23:22浏览次数:92  
标签:phpspreadsheet Excel PhpSpreadsheet composer 二次开发 php 安装 禅道

PhpSpreadsheet是一个PHP表格文件处理库,可用来读写excel文件,本文介绍如何在禅道中引入PhpSpreadsheet库,可以使用它来解析Excel文件,比如上传excel格式的测试用例、导出测试用例为excel格式等。

目录

安装PhpSpreadsheet

PhpSpreadsheet要求PHP 7.3及以上版本,如果禅道使用的PHP版本低于7.3请不要使用它来处理excel格式文件。

由于禅道安装在centos7中,这里介绍如何在centos7中安装PhpSpreadsheet,另外顺便也记录一下在windows系统中安装phpspreadsheet的步骤。

linux安装

这里介绍centos7中如何安装PhpSpreadsheet到禅道目录下。

1. 安装composer

需要使用composer进行安装PhpSpreadsheet,先安装一下composer工具。

安装:

# 下载composer
$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...

Composer (version 2.2.7) successfully installed to: /root/composer.phar
Use it: php composer.phar

# 将composer.phar文件移动到bin目录以便全局使用composer命令
$ mv composer.phar /usr/local/bin/composer

# 切换国内源
$ composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

2. 卸载低版本PHP

卸载原来的低版本PHP:

$ rpm -qa|grep php
php-cli-5.4.16-48.el7.x86_64
php-common-5.4.16-48.el7.x86_64
php-5.4.16-48.el7.x86_64
$ rpm -e php-cli-5.4.16-48.el7.x86_64
错误:依赖检测失败:
        php-cli(x86-64) = 5.4.16-48.el7 被 (已安裝) php-5.4.16-48.el7.x86_64 需要
$ rpm -e php-5.4.16-48.el7.x86_64
警告:/etc/httpd/conf.d/php.conf 已另存为 /etc/httpd/conf.d/php.conf.rpmsave
$ rpm -e php-cli-5.4.16-48.el7.x86_64
$ rpm -e php-common-5.4.16-48.el7.x86_64

将禅道的PHP 加入环境变量:

vi /etc/profile

export PATH="$PATH:/opt/zbox/bin/"

source /etc/profile

3. 安装phpspreadsheet

进入禅道目录安装phpspreadsheet:

$ cd /opt/zbox/app/zentao/lib
$ mkdir excel
$ cd excel
$ composer require phpoffice/phpspreadsheet

会自动安装到vendor目录下:

$ pwd
/opt/zbox/app/zentao/lib/excel/vendor
$ ls
autoload.php  composer  ezyang  maennchen  markbaker  myclabs  phpoffice  psr  symfony

windows安装

我使用的是XAMPP软件包配置的PHP环境,和linux中一样,先安装PHP依赖管理工具composer。

1. 安装composer

下载phar文件 composer.pharhttps://getcomposer.org/download/,复制到D:\tools\xampp\php\pear 目录下,创建 composer.bat 文件,编写代码:

@php %~dp0composer.phar %*

然后将 D:\tools\xampp\php\pear 目录添加到环境变量。

打开cmd窗口,执行 composer -V 查看是否安装成功:

$ composer -V
Composer version 2.3.3 2022-04-01 22:15:35

也可以下载 Composer-Setup.exe 文件进行安装。

2. 安装phpspreadsheet

进入 D:\tools\xampp\php\pear 目录下,执行:

composer require phpoffice/phpspreadsheet

如果报如下错误:

Installation failed, deleting ./composer.json.

In RequireCommand.php line 210:

  No composer.json present in the current directory (./composer.json), this may be the cause of the following excepti
  on.


In PackageDiscoveryTrait.php line 308:

  Package phpoffice/phpspreadsheet has requirements incompatible with your PHP version, PHP extensions and Composer v
  ersion:
    - phpoffice/phpspreadsheet 1.22.0 requires ext-gd * but it is not present.

修改 D:\tools\xampp\php\php.ini 文件,取消 extension=gdextension=fileinfo 的注释。

安装完成后执行 composer info 可看到安装的 phpoffice/phpspreadsheet 包。

禅道集成PhpSpreadsheet

PhpSpreadsheet安装到禅道目录后就可以使用它来处理excel文件了,先在module目录下创建模块excel,然后在/module/excel 创建文件model.php,编写读取Excel文件方法:

<?php
require '/opt/zbox/app/zentao/lib/excel/vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\Reader\Xls;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;

class excelModel extends model
{
    /**
     * Parse Excel.
     *
     * @param  string    $fileName
     * @access public
     * @return void
     */
    public function readexcel($fileName)    { 
        
        // $reader = new Xlsx();
        // $spreadsheet = $reader->load($fileName);
        $reader = IOFactory::createReader('Xlsx');
        $spreadsheet = $reader->load($fileName);
        
        // $datas = $spreadsheet->getActiveSheet()->toArray();
        $worksheet = $spreadsheet->getActiveSheet();
        $worksheetArray = $worksheet->toArray();
        
        }
}

PhpSpreadsheet的更多使用方法可参考官方文档:https://phpspreadsheet.readthedocs.io/en/latest/

--THE END--

起风了,要努力活下去吗,不,无须如此。——堀辰雄《起风了》

标签:phpspreadsheet,Excel,PhpSpreadsheet,composer,二次开发,php,安装,禅道
From: https://www.cnblogs.com/hiyong/p/16271676.html

相关文章

  • Revit二次开发 钢筋生成
    创建钢筋是revit的一个重要的功能,其主要是revit结构钢筋功能的部分,如下图所示:钢筋具有2中形式,一种是以自由钢筋生成,另外一种是钢筋区域生成钢筋区域。1、自由钢筋Rebar1.1......
  • excel文档遇到停止工作无法打开的解决方法
    提示是appcrash,KERNELBASE.dll错误Windows7系统中,偶尔会出现这样的软件无法启动问题,详细信息是KERNELBASE.dll错误,不知是什么原因?  其实这并不是KERNELBASE.dll的问题,......
  • 练习:从txt文档读取关键数据,并写入excel
    从txt文档读取关键数据,并写入excelimportxlwtwithopen('C:\\Users\\ThinkPad\\Desktop\\test3.log','w+',encoding='utf-8')asf:fortextinf.readlines():......
  • 【Traefik二次开发】中间件 Middleware 开发
    本篇只讨论HTTP中间件中间件定义https://doc.traefik.io/traefik/middlewares/overview/Attachedtotherouters,piecesofmiddlewareareameansoftweakingthe......
  • 【Traefik二次开发】服务 Service 开发
    Service定义https://doc.traefik.io/traefik/routing/services/TheServicesareresponsibleforconfiguringhowtoreachtheactualservicesthatwilleventuall......
  • ASP中把数据导出为Excel的三种方法
     方法一:用excel组件这种方法利用Excel组件直接导出excel文件,要求服务器端安装有微软office(Excel)程序,否则无法运行。完整示例如下:Setconn=server.CreateObject("adod......
  • 20220827 使用EasyExcel导出复杂表格
    1、前言突然有个比较复杂的表格导出需求,写着挺好玩的,记录一下。需要实现的表格如图所示:先分析一下表格,可以看出大致分了四个区域:①第2-8行,②第9行,③第10-14行,④第15行。......
  • 【NX二次开发】用数学函数获得两点的距离
    两点之间的距离公式: 源码://获得平面上2点距离doublegetPointToPointDis(doublep1[2],doublep2[2]){returnsqrt((p1[0]-p2[0])*(p1[0]-p2[0])+(p1[1......
  • CAD二次开发 求曲线交点的方法
    AutoCAD的IntersectWith方法EntityentityPointer:与该实体相交的另一个实体IntersectintersectType:相交的类型,为一枚举QPoint3dCollectionpoints:获取所有相交的交点......
  • delphi TMS FlexCel 导出PDF
    TMSFlexCel导出PDF属性和方法TFlexCelPdfExport用于将Excel文件导出为PDF的组件。unitFlexCel.RenderTFlexCelPdfExport.CreateconstructorCreate(constaWorkbo......