用PHP创建XLS文件的最佳方法是什么

用PHP创建XLS文件的最佳方法是什么,php,csv,xls,Php,Csv,Xls,我目前正试图找出从PHP创建.xls文件的最佳方法。在我看来,我所需要做的就是将标题内容类型更改为“application/vnd.ms excel”,然后以逗号分隔的格式输出数据。这是最好的方法吗 谢谢你的帮助大都会 编辑 仅仅将数据输出为HTML是否不好?我已经有一个类,我想扩展这个问题,所以我宁愿远离第三方解决方案。我只需要知道输出数据的最佳方式是什么,以便最大限度地利用该文件格式 在查看PHPExcel之后,它似乎是解决此问题的最佳解决方案。我很感激你的所有答案,如果我能笑的话,我会给出

我目前正试图找出从PHP创建.xls文件的最佳方法。在我看来,我所需要做的就是将标题内容类型更改为“application/vnd.ms excel”,然后以逗号分隔的格式输出数据。这是最好的方法吗

谢谢你的帮助
大都会

编辑

仅仅将数据输出为HTML是否不好?我已经有一个类,我想扩展这个问题,所以我宁愿远离第三方解决方案。我只需要知道输出数据的最佳方式是什么,以便最大限度地利用该文件格式


在查看PHPExcel之后,它似乎是解决此问题的最佳解决方案。我很感激你的所有答案,如果我能笑的话,我会给出三个正确的答案。但是,如果你需要一个在Ms Excel中打开的普通CSV文件,那么就必须进行投票:)

试试,ala等等。

看看这个PEAR包:

是的,这是一种可能的方法


如果您需要一个丰富的XLS文件,有许多选项,包括使用第三方dll(如“CarlosAg.ExcelXmlWriter.dll”)来创建XLS文件。您可以在网上搜索使用此dll的示例,或者根据需要CSV文件还是XLS文件。XLS文件可以包括单元格的格式信息,以及行/列锁定、保护和CSV文件中不可能的其他功能。另外,请记住,在打开CSV文件时,Excel不能正确支持UTF-8编码的内容

若您想要一个格式化的XLS文件,那个么您需要一个库,比如可以用这种格式编写文件的库,或者COM,若您的服务器运行在安装了Excel的Windows上,那个么您可以使用Microsoft Office能够理解的库

有关详细信息/规格,请参见Microsoft网站

有一个叫做的图书馆,你可以看看,以帮助你做到这一点

当然,这取决于你所说的:

“充分利用该文件格式”


如果您只有没有格式的简单表格,CSV文件可能就是您所需要的全部;但是,如果您想使用电子表格的更多功能,我建议您看看OpenXML。

您只需输出html,更新版本的Excel就会读取它。我不知道你能用它做多少格式化

如果您需要数据类型、丰富的格式或公式,我已经成功地使用了


我的首选是写出CSV文件。CSV是一种非常容易编写的格式,并且可以从现有html表脚本轻松转换。它还有一个优点,就是可以被各种各样的非microsoft电子表格程序读取。如果您可以选择CSV作为web应用程序的文件格式,那么当您必须接受电子表格作为输入时,您将获得奖励。阅读和解析CSV文件比Excel文件要容易得多。

免责声明:我在Expected Behavior工作,该公司开发了DocRaptor

也就是说,您可以使用DocRaptor从HTML生成XLS文件。DocRaptor是一个RubyonRails项目,但您可以将其与PHP一起使用。下面是我们的PHP示例:

这里是DocRaptor主页的另一个链接:


您可以开始使用此文件。它将创建一个excel文件并帮助您下载它

可以在中添加这样的行

01-simple-download-xlsx.php

您可以使用while循环从这样的数据库打印数据

$i=2;   
while ($row = $database->fetch_array($result)) 
 { 

       $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A'.$i, $row[0])
            ->setCellValue('B'.$i, $row[1])
            ->setCellValue('C'.$i, $row[2])
            ->setCellValue('D'.$i, $total)
        ->setCellValue('E'.$i, round(($row[2]/$total)*100));
          $i++;
 }

这很简单,因为excel支持html代码。因此,您只需要在文件顶部添加一个头。。然后回显您的html代码

header ( "Content-type: application/vnd.ms-excel" );
header ( "Content-Disposition: attachment; filename=foo_bar.xls" );
echo "<table><tr><th>Header1</th></tr><tr><td>value1</td></tr></table>";
标题(“内容类型:application/vnd.ms excel”);
标题(“内容配置:附件;文件名=foo_bar.xls”);
回显“Header1value1”;

这将生成一个excel文件

我同意你关于CSV文件的看法。如果由我决定的话,这就是我将使用的格式。但不幸的是,我需要使用XLS…将标题内容类型更改为“application/vnd.ms excel”,然后使用HTML、TAB或CSV格式的文本内容编写XLS文件将有效。然而,这是一种技巧,因为MS Excel将能够打开该文件,即使它不是真正的二进制XLS文件,但您将无法使用任何Excel功能(如多张工作表)。我使用的一种方法是MS Excel应用程序本身,请参阅。我使用的另一种方法是。如何生成多张图纸?只需关闭并重新打开
?这不是工作原理。这一切都不是这样的只是在HTML输出上添加假MIME头与Excel文件不同。打开一个文件扩展名不正确的HTML摘录只会在几个Excel警告后触发best effort import函数。几乎不可靠。嘿@mario,但是我已经用php测试创建了excel,使用了大多数框架,返回的是(example.xls)元素表(与html相同),如果这个方法100%有效,为什么不使用这个方法呢?linux怎么样,外部库不是办法,你不知道它们会被维护多久,也不知道里面有什么
header ( "Content-type: application/vnd.ms-excel" );
header ( "Content-Disposition: attachment; filename=foo_bar.xls" );
echo "<table><tr><th>Header1</th></tr><tr><td>value1</td></tr></table>";