PHPExcel - 读取下载的 xlsx 文件

Posted

技术标签:

【中文标题】PHPExcel - 读取下载的 xlsx 文件【英文标题】:PHPExcel - Read downloaded xlsx file 【发布时间】:2015-08-02 21:07:18 【问题描述】:

最近我从网上下载了一个生成的 Excel 文件 (xlsx),并将其保存到我的电脑中。要在 Excel 中编辑此文件,我首先必须单击“受保护的视图 - 启用编辑”来编辑文档。

当我在没有先在 Excel 中打开此文件的情况下将文件上传到服务器时,phpExcel 无法识别 Excel 文件中的数据。在 Excel 中打开文件并单击“启用编辑”并重新保存文件后,PHPExcel 会正确导入文件。

我检查了文件的 mimetype(下载后直接)。 mimetype 是“application/zip”(而不是“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”)。在 Excel 中重新保存文档后,mimetype 为“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”。

我使用 PHPExcel 导入文件的代码:

<?php
$file_name = 'Excelfile.xlsx';

$objReader = PHPExcel_IOFactory::createReaderForFile($file_name);

$objReader->setReadDataOnly(true);

$objPHPExcel = $objReader->load($file_name);

$worksheet = $objPHPExcel->getSheet(0);
?>

有谁知道如何使用 PHPExcel 读取 Excel 文件,而无需在 Excel 中重新保存文件?

【问题讨论】:

【参考方案1】:

“受保护的视图”是最新版本的 MS Excel/Office 本身内置的安全功能。从互联网下载的任何文件都被视为可疑文件,需要用户明确确认他们希望在编辑模式下启用它,然后才能对其进行编辑。

据我所知,这并没有影响 PHPExcel 以任何方式加载文件的能力,但我会看一下,看看我是否能确定造成这种情况的原因。能否请您在github

上提出它作为一个问题

【讨论】:

感谢您的回复马克和您的好工作!我应该将这两个文件发送给您以进行测试吗? 拥有用于测试目的的证明问题的文件总是有用的(特别是如果它们足够小以快速运行测试) 我把文件发给你了。 Tnx! 今晚会看看,但解决方案可能需要更长的时间 文件/存档的内容如下所示:msdn.microsoft.com/en-us/library/office/gg278316.aspx

以上是关于PHPExcel - 读取下载的 xlsx 文件的主要内容,如果未能解决你的问题,请参考以下文章

phpexcel 读取csv大文件只读取显示A列

php 下载excel文件不能打开

PHPExcel:使用 X 命名空间解析 XLSX 文件

使用PHPExcel读取大文件(20M左右)时,报内存不足。

php上传excel文件,如何读取文件中的信息?

如何用PHPExcel读取超大excel文件