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里去实现。

相关评论(0)
您是不是忘了说点什么?

友情提示:垃圾评论一律封号...

还没有评论,快来抢沙发吧!