如何在不安装的情况下使用 PhpSpreadsheet(如 PHPExcel)
Posted
技术标签:
【中文标题】如何在不安装的情况下使用 PhpSpreadsheet(如 PHPExcel)【英文标题】:How to use PhpSpreadsheet without installation (like PHPExcel) 【发布时间】:2018-07-23 20:31:58 【问题描述】:根据phpSpreadsheet Doc,需要用composer安装。 就我而言,我只有一个没有终端但没有 Plesk 的网络空间。是否可以使用 PhpSpreadsheet,就像使用 PHPExcel 一样,您只需将文件放在任何位置? 我该怎么做才能让它运行?我没有找到更多信息如何仅使用 FTP 网络服务器访问。
【问题讨论】:
【参考方案1】:你的情况有两种选择!
答案:1
没有终端的替代方法
Run composer with a PHP script in browser
答案:2
第三方网站,允许在线下载作曲家包。获取PHP电子表格最新版本。
https://php-download.com/package/phpoffice/phpspreadsheet
奖励您几乎可以下载任何作曲家包@https://php-download.com
【讨论】:
您引导我找到最佳解决方案。在第一个链接中,@Sven 给出了在本地安装作曲家和附加软件然后上传的提示。 所以这确实有效。很容易。唯一的麻烦是安装所有必需的 php 扩展,直到可以在本地安装 PhpSpreadsheet 而没有错误。安装后 php7.0-cli 我还必须安装: * php7.0-gd * php7.0-zip * php7.0-mbstring 之后我可以安装 PhpSpreadsheet就像在Doc 中一样,只需将生成的文件夹和文件与 ftp 放在网络空间上。 hello World 示例立即生效。 现在已经成功地使用 7-Zip 应用程序解压缩它:7-zip.org 非常感谢!我受不了“作曲家”的废话。应该通过在主脚本中包含一个 .php 文件来包含 PHP 库,就是这样 我不明白为什么人们强迫 composer horsesh!t,我永远无法在 windows7 和 10 下安装它【参考方案2】:您是否考虑过在本地安装 composer,按照说明运行它,然后通过普通 FTP 将生成的文件发送到服务器?你在你的电脑上安装 composer 并运行它,然后通过 FTP/SFP 上传...
Composer 并非“必须”在用户下载页面时实时运行,而是“主要”在您的本地计算机上运行并生成稍后上传到服务器的文件和依赖项。它可以更新您服务器上的文件,但这是一种方便而非必需。
【讨论】:
虽然这可能是最实用的解决方案,但您必须记住,它完全绕过了生产系统上的 PHP 扩展需求检查。因此,您必须格外小心地手动检查。 @PowerKiKi 是的,它会在本地检查所有扩展要求和依赖项,因此您必须确保将它们全部上传。当您上传时,您只需上传整个文件夹,如果有疑问,您是安全的。另一方面,我不相信事情会在我不知情的情况下自动更新。如果我认为更新是必要且稳定的,我完全愿意成为上传更新的人。【参考方案3】:通过注册自定义自动加载器和 PSR simplecache 自动加载器,可以完全解决作曲家安装 - 请参阅:
https://github.com/PHPOffice/PhpSpreadsheet/issues/31#issuecomment-354502740
请注意,通过 composer 安装是目前唯一官方支持的解决方案。
【讨论】:
【参考方案4】:我遇到了同样的问题。我从 github 上下载了 Library https://github.com/PHPOffice/PhpSpreadsheet 并做了一些改动
-
更改了其命名空间
使用了 autoload.php 文件
成功了
不需要 Composer 的库在这个链接中 https://github.com/YoloZoloo/PhpSpreadSheet/tree/master
您可以将文件夹名称更改为您喜欢的任何文件夹。 从你的服务器加载[AnyFolder]->table.php,然后按「ダウンロード」。
如果遇到任何问题,请回复我
【讨论】:
【参考方案5】:示例代码
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');
$writer = new Xlsx($spreadsheet);
$writer->save('hello world.xlsx');
【讨论】:
【参考方案6】:Smartpal,感谢您的包,它运行良好!
也可以替换文件夹:
/phpspreadsheet/vendor/phpoffice/phpspreadsheet/src/
在 Smartpal 的存档中,包含来自 phpspreadsheet github 的更多新鲜资源,它也可以工作。
PS:如果您在读取以CP1252
以外的编码保存的 xls 文件时遇到问题,您必须在文件 ./src/PhpSpreadsheet/Reader/Xls.php
中寻找文字 CP1252
并将它们替换为您需要的其他值或一些命名常量甚至mb_detect_encoding()
。然后它将正确读取此类 xls。
【讨论】:
用新文件替换一些文件是一个糟糕的主意,当文件被重命名或引入新文件时,它会在将来的某个时候失败。你真的应该使用作曲家。以上是关于如何在不安装的情况下使用 PhpSpreadsheet(如 PHPExcel)的主要内容,如果未能解决你的问题,请参考以下文章
如何在不安装的情况下使用 PhpSpreadsheet(如 PHPExcel)
如何在不使用 sudo 的情况下安装 virtualenv?
如何在不安装的情况下在应用程序中使用 Berkeley DB