PHP - 只读电子表格文件类型?

jjc*_*son 8 php formatting file-type spreadsheet readonly

我正在使用一个简单的基于Web的PHP应用程序,它将表格作为电子表格输出

header("Content-Disposition: attachment; filename=" . $filename . ".xls");
header("Content-Type: application/vnd.ms-excel");

//inserts tab delimited text
Run Code Online (Sandbox Code Playgroud)

但我发现下载的电子表格打开为只读文件,必须在本地保存(在Windows上的Excel中),类型更改为XLS(来自HTML).有没有办法正确设置filetype的属性,以便进行简单的保存不需要更正文件类型?

文件是否以安全性方式下载为只读,这是不正常的?

此外,我不喜欢在Excel或OpenOffice(在Linux上)打开电子表格时创建的自动边框.我宁愿没有边框格式.文件中是否有一种方法可以指定没有添加的格式或者是否内置到这些应用程序中?

小智 8

我不知道你在谈论哪个版本的Excel,所以我猜你正在使用2007或更新的版本.

扩展更改问题可能取决于名为" 扩展强化 " 的Office功能; 据我所知,唯一的解决方案是生成一个真正的Excel文件(例如,通过使用PHPExcel类集),而不是HTML文件.

出于安全原因,下载的文件是只读的,因为它们是在所谓的" 受保护的视图 "中打开的:

来自Internet和其他可能不安全的位置的文件可能包含病毒,蠕虫或其他类型的恶意软件,这些文件可能会损害您的计算机.为了保护您的计算机,可以在受保护的视图中打开这些可能不安全的位置的文件.通过使用受保护的视图,您可以读取文件并检查其内容,同时降低可能发生的风险.

最后,关于边框和格式的说法:使用旧的Excel 2000版本,您可以通过在HTML代码的标题部分中添加一些XML标记来格式化输出; 有关更多详细信息和示例,请参阅" Microsoft Office HTML和XML参考 ",但请记住它已经过时了,所以我认为这种技术仍然不适用于最新的Excel版本.

如果您想要更多地控制生成的输出,则不应使用简单的HTML来创建电子表格文件.

这篇文章中,您还可以找到PHPExcel的一些替代方法来编写Excel文件.


Sin*_*nür 6

AFAIK,至少在Windows上,它取决于用户在关注链接时对浏览器显示的提示做了什么.

如果用户选择保存文件,则它不是只读的.如果用户选择将其打开,则该文件将保存到临时目录中,浏览器可能会在关闭时将其删除.我不确定这种机制是如何工作的,但我假设有一个锁只涉及一些使文件只读的地方.