如何从PHP生成具有多个工作表的Excel文档?

2022-08-30 15:29:14

我想从PHP生成一个MS Excel文件。我知道一个人可以做这样的事情:

header ( "Content-type: application/vnd.ms-excel" );
header ( "Content-Disposition: attachment; filename=foo_bar.xls" );

但它将生成一个只有一个工作表的文件。我想要的是生成一个包含多个工作表的文件。我该怎么做?也许有一个第三方库,但我没有找到太多。


答案 1

试着看看PHPExcel。这是一个创建包含两个工作表的 Excel 文件的简单示例:

<?php
require_once 'PHPExcel.php';
require_once 'PHPExcel/IOFactory.php';

// Create new PHPExcel object
$objPHPExcel = new PHPExcel();

// Create a first sheet, representing sales data
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Something');

// Rename sheet
$objPHPExcel->getActiveSheet()->setTitle('Name of Sheet 1');

// Create a new worksheet, after the default sheet
$objPHPExcel->createSheet();

// Add some data to the second sheet, resembling some different data types
$objPHPExcel->setActiveSheetIndex(1);
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'More data');

// Rename 2nd sheet
$objPHPExcel->getActiveSheet()->setTitle('Second sheet');

// Redirect output to a client’s web browser (Excel5)
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="name_of_file.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');

答案 2

如果你的意思是让你的PHP脚本创建一个Excel文件,在任何工作表上写一些东西,等等,然后提供给客户端下载,你可以只使用PHP的内置COM扩展。请参阅:http://us2.php.net/manual/en/class.com.php 了解各种示例。但是,您需要在服务器上安装Excel(或像OpenOffice这样的克隆)。如果你不这样做,也许马克·贝克上面的答案会在没有它的情况下工作。


推荐