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

本文介绍如何使用PHP创建并下载包含多个工作表(如sheet1, sheet2等)的Excel文件,告别单一工作表的限制。通过phpexcelbuilder库实现这一功能。" 119890417,7853721,深度学习模型优化策略总结,"['深度学习', '机器学习', '模型优化', '神经网络', '预训练模型']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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



### 如何在Excel中添加新Sheet页以及其自动命名规则 在Excel中,用户可以通过多种方式添加新的工作表Sheet)。默认情况下,当用户插入一个新的工作表时,Excel会根据现有的工作表名称自动生成一个名称[^1]。例如,如果当前的工作表名称为 `Sheet1`、`Sheet2` 和 `Sheet3`,那么新增加的工作表将被命名为 `Sheet4`。 #### 默认命名规则 Excel 的默认命名规则是基于现有的工作表名称进行递增的。具体来说: - 如果现有的工作表名称以 `Sheet` 开头并带有数字后缀(如 `Sheet1`),那么新添加的工作表名称将继续这一模式,并使用下一个可用的数字。 - 如果没有以 `Sheet` 开头的工作表,则新添加的工作表仍然会被命名为 `Sheet1`,除非该名称已经被占用[^2]。 #### 自定义命名规则 虽然 Excel 提供了默认的命名规则,但用户也可以手动更改新添加的工作表名称。方法如下: 1. 右键点击工作表标签。 2. 选择“重命名”选项。 3. 输入新的工作表名称。 此外,如果需要批量生成具有特定命名规则的工作表,可以使用 VBA(Visual Basic for Applications)脚本来实现自动化。以下是一个简单的 VBA 示例代码,用于创建多个工作表并按照指定规则命名: ```vba Sub CreateSheets() Dim i As Integer Dim sheetNamePrefix As String sheetNamePrefix = "CustomSheet" &#39; 设置前缀 For i = 1 To 5 &#39; 创建5个工作表 Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Name = sheetNamePrefix & i Next i End Sub ``` 此代码将创建 5 个新工作表,并将它们命名为 `CustomSheet1` 到 `CustomSheet5`[^3]。 #### 注意事项 - 工作表名称不能包含特殊字符(如 `/`、`\`、`*`、`?` 等)[^4]。 - 工作表名称长度限制为 31 个字符。 - 如果尝试将工作表重命名为已存在的名称,Excel 将提示错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值