我目前正在尝试找出从PHP创建.xls文件的最佳方法。在我看来,我需要做的就是将标题内容类型更改为“application / vnd.ms-excel”,然后以逗号分隔格式输出数据。这是最好的方法吗?
感谢您的帮助!
大都会
修改
将数据输出为HTML会不会很糟糕?我已经有一个课程,我想扩展这个问题,所以我宁愿远离第三方解决方案。我只需要知道输出数据的最佳方法是什么,以便充分利用该文件格式。
在查看PHPExcel之后,它似乎是解决此问题的最佳解决方案。我很感谢你的所有答案,如果我能解决的话,我会给出三个正确的答案。但是投票必须要做:)
答案 0 :(得分:15)
取决于您是否需要CSV文件或XLS文件。 XLS文件可以包括单元格的格式信息,以及行/列锁定,保护和CSV文件中不可能的其他功能。另外,请记住,在打开CSV文件时,Excel不能正确支持UTF-8编码的内容。
如果你想要一个格式化的XLS文件,那么你需要一个可以用这种格式编写文件的PhpSpreadsheet库,或者如果服务器在安装了Excel的Windows上运行则需要COM
答案 1 :(得分:13)
非常简单,因为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>";
这将生成一个excel文件!
答案 2 :(得分:3)
您可以使用Microsoft Office理解的XML formats之一。
有关详情/规格,请参阅Microsoft的OpenXML Developer网站。
有一个名为PHPExcel的图书馆可供您查看以帮助您解决此问题。
当然,这完全取决于你的意思:
“充分利用该文件格式”
如果您只有简单的表格而没有格式化,那么您可能只需要CSV文件;但是,如果您想使用电子表格的更多功能,我建议您查看OpenXML。
答案 3 :(得分:2)
您可以输出HTML,更新版本的Excel会读取它。我不知道你可以用它做多少格式化。
如果您需要数据输入,丰富的格式或公式,我已成功使用PHPExcel。
我的偏好是写出CSV文件。 CSV是一种非常简单的格式,可以从现有的html表脚本轻松转换。它还具有可被各种非微软电子表格程序读取的优点。如果您可以将CSV作为Web应用程序的首选文件格式,那么当您必须接受电子表格作为输入时,您将获得奖励。读取和解析CSV文件要比Excel文件容易得多。
答案 4 :(得分:1)
在SO上尝试XLS file wrapper,ala this post。
答案 5 :(得分:1)
看看这个PEAR包:Spreadsheet Excel Writer
答案 6 :(得分:1)
免责声明:我在开发DocRaptor的公司Expected Behavior工作。
也就是说,您可以使用DocRaptor从HTML生成XLS文件。 DocRaptor是一个Ruby on Rails项目,但您可以将它与PHP一起使用。这是我们的PHP示例:
这是DocRaptor主页的另一个链接:
答案 7 :(得分:0)
是的,这是一种可能的方式 - 如果您需要一个将在Excel中打开的普通CSV文件。
如果您需要丰富的XLS文件,可以使用许多选项,包括使用第三方DLL(如“CarlosAg.ExcelXmlWriter.dll”)来创建XLS文件。您可以在网上搜索使用此dll的示例或Look here
答案 8 :(得分:0)
您可以开始使用此文件。它将创建一个excel文件并帮助您下载它。 在此处下载Souce代码或现场演示:http://purpledesign.in/blog/to-generate-excel-using-php/
您可以在
中添加这样的行01-简单下载-xlsx.php
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Roll')
->setCellValue('B1', 'Name')
->setCellValue('C1', 'Total Classes')
->setCellValue('D1', 'Class Attended')
->setCellValue('E1', 'Percentage');
您可以使用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++;
}