代码之家  ›  专栏  ›  技术社区  ›  jjclarkson Andy Rose

只读电子表格文件类型?

  •  8
  • jjclarkson Andy Rose  · 技术社区  · 16 年前

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

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

    但我发现下载的电子表格是以只读文件打开的,必须在本地保存(在Windows的Excel中),类型更改为XLS(从HTML)。有没有一种方法可以正确设置filetype的属性,这样做一个简单的保存就不需要更正filetype?

    根据安全性的性质,下载的文件是只读的还是不正常的?

    另外,我不喜欢在Excel或OpenOffice(在Linux上)中打开电子表格时创建的自动边框。我希望没有边框格式。文件中是否有指定不添加格式的方法,或者这是否内置于这些应用程序中?

    3 回复  |  直到 16 年前
        1
  •  8
  •   Community Mohan Dere    8 年前

    我不知道你说的是哪个版本的Excel,所以我假设你使用的是2007或更新版本。

    扩展更改问题可能取决于名为“的Office功能” Extension Hardening “据我所知,唯一的解决方案是生成一个真正的Excel文件(例如使用 PHPExcel 一组类),而不是HTML文件。

    由于安全原因,下载的文件是只读的,因为它们是在所谓的 Protected View “:

    来自Internet和其他潜在不安全位置的文件 可能包含病毒、蠕虫或其他类型的恶意软件 你的电脑。为了帮助保护您的计算机,文件 在受保护的视图中打开了可能不安全的位置。通过使用 受保护的视图,您可以在 降低可能发生的风险。

    最后,一个关于边框和格式的词:对于旧的Excel2000版本,您可以通过在HTML代码的标题部分添加一些XML标记来格式化输出;请参见“ Microsoft Office HTML and XML Reference “对于进一步的细节和示例,请记住,这是非常过时的,所以我不认为这种技术仍然适用于最新的Excel版本。

    如果希望对生成的输出有更多的控制权,则不应使用简单的HTML来创建电子表格文件。

    this post 您还可以找到一些替代phpexcel的方法来编写Excel文件。

        2
  •  6
  •   Sinan Ünür    16 年前

    Afaik,至少在Windows上,它取决于用户在跟踪链接时使用浏览器显示的提示所做的操作。

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

        3
  •  0
  •   Alessandra Bilardi    13 年前

    如果要在本地保存,可以设置属性 content-description :

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

    编辑

    如果打印以制表符分隔的文本和属性 content-disposition 像XLS或CSV, Excel应用程序(或其他程序,如gnumeric或OpenOffice)将其识别为XLS或CSV。

    推荐文章