【问题标题】:PHP Excel, but no Spreadsheet_Excel_WriterPHP Excel,但没有 Spreadsheet_Excel_Writer
【发布时间】:2011-04-01 13:17:48
【问题描述】:

我需要在 .xls 文件中保存一些数据。我正在尝试使用 PEAR 库 Spreadsheet_Excel_Writer。这是工作。但现在我正在使用没有 PEAR 的主机。当然,这是非常可怕的。

Spreadsheet_Excel_Writer 有很多依赖项。我需要一个模块或代码,我可以将其包含在我的脚本中。

谢谢。

【问题讨论】:

    标签: php excel pear xls


    【解决方案1】:

    从字面上看,PHPExcel:http://phpexcel.codeplex.com/

    【讨论】:

    • 他需要一个 php_zip php_gd 和 php 5.2。我的客户托管没有这个东西。和 php 5.16。糟糕的托管!
    • 一些用户报告说 PHPExcel 将在 5.1.6 上运行,并且可以使用用于 zip/unzip 二进制文件 (sourceforge.net/project/showfiles.php?group_id=254316) 的 php 包装器代替 php_zip;并且 gd 仅在您使用工作表中的图像或使用带有旋转文本的自动列大小时使用。但是,我不能对此做出任何保证;虽然我正在做一些工作来尝试减少要求,但这不是优先事项。
    • 关于 php 5.1.6 的注释:AFAIK 它是 Red Hat Enterprise Linux (5.#) 和衍生产品支持的最新 php 版本,具有长期支持的真实发行版。具有较新 php 的 RHEL 6 已于昨天发布(!)
    • @goorj:确实是生活圈。如果你太担心稳定性,你就会过时。如果您过分担心新功能,就会遇到不稳定和不兼容的问题。 (无论如何,RHEL 6?现在这是好消息!)
    【解决方案2】:

    这是一种鲜为人知的格式,从未真正流行起来,但 MS Office 支持所谓的 Excel 2003 XML 文件——这些文件确实是 XML,至少看起来像这样:

    <?xml version="1.0"?>
    <?mso-application progid="Excel.Sheet"?>
    <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
        xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
      <Worksheet>
        <Row>
          <Cell>
            <Data ss:Type="String">First</Data>
          </Cell>
        </Row>
       </Worksheet>
     </Workbook>
    

    您可以非常简单地生成此文件而无需任何 PHP 扩展名,并且它将在自 2003 年以来的任何版本的 MS Excel 中正确打开。如果您将文件扩展名重命名为 .xls.xml,OpenOffice 2 和 3 将正确打开这些文件

    当用户打开此文件并从 Excel 中保存时,默认情况下,它将转换为经典 XLS 文件。

    正如@Alexander.Plutov 在评论中指出的那样,有a library for writing these files

    IBM 网站上有一个有用的(更全面的)页面,介绍了这种格式和 PHP:http://www.ibm.com/developerworks/opensource/library/os-phpexcel/#N101F7

    【讨论】:

    • 我想知道这个答案应该是错误的;我已经多次以这种方式成功地使用了 Excel 2003 XML 格式,并且可以正常工作。想发表评论吗?
    • 我没有投反对票,但我怀疑这可能是使用字符串连接来构建 xml 文件而不是 XMLWriter 或类似文件
    • @Mark Ba​​ker:可能。我提到表明,在极端情况下,没有库是绝对必要的(在受限环境中必须这样做一次;但我同意在大多数情况下使用 XMLWriter 编写 XML 是有意义的)。编辑了。
    【解决方案3】:

    我正在使用 http://www.bettina-attack.de/jonny/view.php/projects/php_writeexcel/

    我把它简单地包含在许多项目中,它就像一个魅力。

    【讨论】:

      【解决方案4】:

      我经常使用电子表格编写器,拥有它很不错,但如果您不需要多张表格或进行一些格式化等功能,您总是只需输出 HTML 并发送一个

      header("Content-type: application/vnd.ms-excel")
      

      和“.xls”的扩展名,然后 Excel 或 OpenOffice 的电子表格程序(我猜,我猜是 Mac 的电子表格程序)将打开它并将 HTML 格式化为电子表格。

      这不是原生解决方案,但最终对最终用户来说看起来不错。您必须在 html 中使用表格,但您可以添加颜色/边框、填充、字体更改、行跨度、列跨度等,以进行一些控制。但是,没有函数、公式或多张工作表。

      【讨论】:

        【解决方案5】:

        注意,Piskvor 提供的源代码:

        <?xml version="1.0"?>
        <?mso-application progid="Excel.Sheet"?>
        <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
            xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
          <Worksheet>
            <Row>
              <Cell>
                <Data ss:Type="String">First</Data>
              </Cell>
            </Row>
           </Worksheet>
         </Workbook>
        

        不是一个有效的 Excel 文件(至少在我的版本 - Excel 2010 中)并且将无法打开并产生错误消息,因为它缺少以下示例中更正的两个必需值(缺少的部分是在 @987654322 @ 你需要一个Table 和一个WorkSheet 必须有一个名称指定为ss:Name 中的字符串):

        <?xml version="1.0"?>
        <?mso-application progid="Excel.Sheet"?>
        <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
            xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
           <Worksheet ss:Name="test">
             <Table>
               <Row>
                 <Cell>
                   <Data ss:Type="String">First</Data>
                 </Cell>
               </Row>
             </Table>
           </Worksheet>
         </Workbook>
        

        这确实变成了一个有效的 excel 电子表格,感谢 Piskvor 提醒我们这种美妙的开放且机器和人类可读的格式。

        【讨论】:

          猜你喜欢
          • 2011-07-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-09
          • 2020-03-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-10
          相关资源
          最近更新 更多