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

5 篇文章 0 订阅

一直以来下载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/



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值