【问题标题】:PHP Microsoft Excel file generation / export classPHP Microsoft Excel 文件生成/导出类
【发布时间】:2009-05-15 17:56:29
【问题描述】:

我一直在寻找一个好的 Excel 文件生成类,但还没有找到 - 我的第一个问题是,虽然我可以让导出的文件在 Excel 中打开(运行 2007),但我总是收到警告说“文件的格式与文件扩展名不同”。

我注意到 phpMyAdmin 中的 Excel 导出甚至会生成上述警告消息。

其他用户使用什么代码来满足这个常见需求?

快速更新如果我将生成的 Excel 文件的文件扩展名设置为 xml,它会在浏览器中打开(即使我发送了正确的标题),但如果我选择保存 xml文件,然后从 Excel 中打开它,它可以在没有任何警告的情况下运行!不幸的是,这对用户来说比简单地单击“继续”并收到警告更麻烦。还有什么想法吗?

【问题讨论】:

    标签: php mysql excel class export


    【解决方案1】:

    【讨论】:

    • 感谢您的链接 - 它看起来是一个非常全面的课程,老实说它远远超出了我的要求。
    • 质量好的就不怕尺码了。比使用过时的 PEAR 类要好得多。
    【解决方案2】:

    使用 PEAR 中的 Spreadsheet_Excel_Writer

    将文件写入CSV format
    但是使用Microsoft Excels对csv的理解:分号(;)作为分隔符

    【讨论】:

    • 我查看了 PEAR 包,它看起来需要执行更多工作 - 另外我不确定它是否能解决我的问题,这似乎只影响 Excel 2007。
    • 不要使用 PEAR 包,它已经过时了!自 2006 年以来一直处于测试阶段。请改用 PHPExcel!!!
    【解决方案3】:

    您还可以使用 regedit 禁用对话框

    [HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security]
    “ExtensionHardening”=dword:00000000
    
    • 开始 -> 运行 -> regedit
    • 转到“HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\OFFICE\12.0\EXCEL\SECURITY”
    • 新的 DWORD
    • 键入“ExtensionHardening”作为名称,键入 0 作为值

    【讨论】:

    • 有趣,但对于基于 Web 的应用程序来说并不是一个真正可行的解决方案,尽管 +1。
    • +1 - 我可能实际上可以使用它,因为我在我的网络应用程序的管理区域中提供了这个功能,所以用户是有限的(这是一个定制的应用程序)。跨度>
    【解决方案4】:

    我发现,在我生成的 Excel 文件的 xml 声明下添加以下内容,可确保 Excel 以 xml 文件扩展名(而不是 Web 浏览器)打开文件:

     <?mso-application progid=\"Excel.Sheet\"?>
    

    我还在 php 中设置了以下标头:

    // deliver header (as recommended in php manual)
    header('Content-Type: application/vnd.ms-excel; charset=UTF-8');
    header('Content-Disposition: attachment; filename="' . $filename . '.xml"');
    

    【讨论】:

      【解决方案5】:

      文件的格式不同 文件扩展名

      您是否尝试使用其他文件扩展名保存文件?像“foo.xlsx”而不是“foo.xls”。

      【讨论】:

      • 我有,是的 - xls、xlsx 和 xml - 结果都是一样的。我猜它在某种程度上是畸形的,但我不确定到底是什么。
      • 好的,只是添加到上面 - 实际上,如果我将文件扩展名设置为 xml,它会在浏览器中打开(即使我发送了正确的标题)。如果我选择保存 xml 文件,然后从 Excel 中打开它,它可以在没有任何警告的情况下工作!不幸的是,这对用户来说比简单地点击“继续”并收到警告更麻烦。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多