什么是在PHP中创建XLS文件的最佳方式

什么是在PHP中创建XLS文件的最佳方式

问题描述:

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

感谢您的帮助!
都市报

编辑

难道是坏的,只是将数据输出为HTML?我已经有了一个我想延长解决这个问题的课程,所以我宁愿远离第三方解决方案。我只需要知道输出数据的最佳方式是为了充分利用该文件格式。

看过PHPExcel后,它似乎是解决此问题的最佳解决方案。我非常感谢你的答案,如果我可以大声喧哗,我会给出三个正确的答案。但上涨将不得不做:)

+1

将头文件内容类型更改为“application/vnd.ms-excel”,然后使用HTML,TAB或CSV格式的文本内容写入XLS文件时,将可以正常工作。然而,这是一种技巧,因为MS Excel将能够打开文件,即使它不是真正的二进制XLS文件,但是您将无法使用任何Excel功能(如多张工作表)。我使用的一种方法是MS Excel应用程序本身,请参阅[这里](http://php.net/manual/en/class.dotnet.php)。我使用的另一种方法是[这一个](http://www.gemboxsoftware.com/support-center/kb/articles/44-how-to-use-gembox-spreadsheet-in-php)。 – 2016-02-18 10:54:35

取决于您是否需要CSV文件或XLS文件。 XLS文件可以包含单元格的格式化信息,以及行/列锁定,保护和CSV文件中不可能实现的其他功能。另外,请记住,Excel在打开CSV文件时不能正确支持UTF-8编码的内容。

如果你想有一个格式化的XLS文件,那么你就需要为PhpSpreadsheet这样的库,可以编写与格式文件,或COM如果你的服务器运行在Windows上使用Excel安装

尝试XLS file wrapper,ala this post SO。

看看这个PEAR包:Spreadsheet Excel Writer

是的,这是一种可能的方式 - 如果你需要一个简单的CSV文件,将在Excel中打开女士。

如果您需要一个丰富的XLS文件,有许多选项,包括使用第三方DLL,如'CarlosAg.ExcelXmlWriter.dll'来创建XLS文件。您可以在网上搜索使用此dll的示例或Look here

你可以使用Microsoft Office了解的XML formats之一。

有关详细信息/规格,请参阅微软的OpenXML Developer网站。

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

当然,这一切都取决于你的意思是:

“充分利用该文件格式的”

如果你只是有没有格式,CSV文件简单的表格可能是你需要的一切;然而,如果你想使用电子表格的更多功能,我建议看看OpenXML。

您可以输出html和较新版本的Excel将它读取。我不知道你能用它做多少格式化。

如果您需要数据输入,丰富的格式或公式,我已成功使用PHPExcel

我的首选项是写出CSV文件。 CSV是一种非常容易编写的格式,可以轻松转换现有的html表格脚本。它还具有可被各种非微软电子表格程序读取的优点。如果您可以使CSV成为您的Web应用程序的首选文件格式,那么当您必须接受电子表格作为输入时,您将获得奖励。与Excel文件相比,读取和解析CSV文件要容易得多。

+1

我同意你关于CSV文件斯科特。如果这取决于我将使用的格式。但不幸的是我需要使用XLS .... – Metropolis 2010-06-28 15:33:38

声明:我在开发DocRaptor的公司Expected Behavior工作。

也就是说,您可以使用DocRaptor从HTML生成XLS文件。 DocRaptor是一个Ruby on Rails项目,但您可以将其与PHP结合使用。下面是我们的PHP例子:

DocRaptor PHP example

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

HTML to Excel with DocRaptor

您可以开始使用这个文件。它将创建一个excel文件并帮助您下载它。 下载周守军代码或现场演示这里: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++; 
} 

它很容易,因为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文件!

+1

太简单了!你是天才:) – 2017-03-28 22:05:53

+0

如何生成多个工作表?只需关闭并重新打开'

'? – Meloman2017-10-03 13:53:38
+0

**这不是如何工作**。这不是如何工作。 - 将**伪造的** MIME头部打到HTML输出上与Excel文件不同。打开带有错误文件扩展名的HTML摘录只会在几次Excel警告后触发尽力而为的导入功能。几乎不可靠。 – mario 2017-12-17 00:13:54