您的位置:首页 > 编程语言 > PHP开发

php 下载excel文件,单独设置工作表(sheet1,sheet2,sheet3....)

2017-08-25 16:55 477 查看
一直以来下载excel文件,都是简单使用修改header头的方式进行下载,好处自然是简单直接,缺点是,只能使用一个工作表,即一个sheet。

下面提供一个可生成多个工作表excel文件的code。

<?php
namespace worksheet;
class WorkSheet
{
private $lines = array();
public $sWorksheetTitle;
public function __construct($sWorksheetTitle)
{
$this->setWorksheetTitle($sWorksheetTitle);
}
public function setWorksheetTitle ($title)
{
$title = preg_replace ("/[\\\¦:¦\/¦\?¦\*¦\[¦\]]/", "", $title);
$title = substr ($title, 0, 31);
$this->sWorksheetTitle = $title;
}
public function addRow ($array)
{
foreach($array as $v){
$cells = "";
foreach ($v as $k => $v1){
$type = 'String';
$v1 = htmlentities($v1, ENT_COMPAT, "UTF-8");
$cells .= "<Cell><Data ss:Type=\"$type\">" . $v1 . "</Data></Cell>\n";

}
$this->lines[] = "<Row>\n" . $cells . "</Row>\n";
}

}
public function printline()
{
foreach ($this->lines as $line)
{
echo $line;
}
}
}

class Excel
{
public $worksheets = array();
public function __construct($sWorksheetTitle)
{
$this->addsheet($sWorksheetTitle);
}
public function addsheet($title)
{
$this->worksheets[$title] = new WorkSheet($title);
}
public function generate ($filename = 'excel-export')
{
$filename = preg_replace('/[^aA-zZ0-9\_\-]/', '', $filename);
header("Content-Type: application/force-download");
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment; filename=".$filename.'-'.date("YmdHis").".xls");
echo stripslashes("<?xml version=\"1.0\" encoding=\"UTF-8\"?\>\n<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:html=\"http://www.w3.org/TR/REC-html40\">");
foreach ($this->worksheets as $worksheet)
{
echo "\n<Worksheet ss:Name=\"" . $worksheet->sWorksheetTitle . "\">\n<Table>\n";
$worksheet->printline();
echo "</Table>\n</Worksheet>\n";
}
echo "</Workbook>";
}
}

$xls = new Excel('演员表'); //构造函数,参数为第一个sheet名称
$xls->addsheet('演员表');
$xls->worksheets['演员表']->addRow(array( array("李晨","马苏","杜淳") )); //添加一行,数据为1,2,3
$xls->addsheet('角色表');//新建一个sheet,参数为sheet名称
$xls->worksheets['角色表']->addRow(array( array("何东","权筝","何北") )); //添加一行,数据为3,2,1
$xls->generate('down');//下载excel,参数为文件名
?>






如果可以翻墙的话,可以查阅,提供了更多功能。


phpexcelbuilder

https://code.google.com/archive/p/phpexcelbuilder/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php excel