PHP作为一个快速开发的语言,曾经被号称世界上最好的语言。在工作中经常遇到导出Excel的需求,用PHP自带的类去生成,简单一点的还好,那种恶心的合并去计算表格位置真的很恶心。用tabel也可以生成Excel,但是多个sheet的却有无法胜任。
今天在找资料的时候无意间发现了一个很好用的方法,也是通过拼接字符串的方法去实现,只不过拼接的不是 Html,而是 Xml。
class Excel
{
public $worksheets = array();
public function __construct($sWorksheetTitle)
{
$this->addsheet($sWorksheetTitle);
}
public function addsheet($title)
{
$title = preg_replace ("/[\\\¦:¦\/¦\?¦\*¦\[¦\]]/", "", $title);
$this->worksheets[$title] = substr ($title, 0, 31);
}
public function generate ($filename='excel-export')
{
$filename = preg_replace('/[^aA-zZ0-9\_\-]/', '', $filename);
header("Content-Type: application/vnd.ms-excel; charset=UTF-8");
header("Content-Disposition: inline; filename=\"" . $filename . ".xls\"");
echo stripslashes("\n" );
foreach ($this->worksheets as $worksheet)
{
echo " . $worksheet . "\">";
echo"\n1 | \n"
;
echo"2 | \n";
echo"3 | \n\n";
echo"
";
}
echo "";
}
}
$xls = new Excel('Sheet'); //构造函数,参数为第一个sheet名称
$xls->addsheet('Test'); //新建一个sheet,参数为sheet名称
$xls->generate('my-test'); //下载excel,参数为文件名
直接执行既可以下载文件,用它可以生成多个 Sheet的Excel而不必去恶心的拼接。而且如果需要合并或者其他样式的话,也可以直接在拼接的xml里去实现。
友情提示:垃圾评论一律封号...