PHP使用PhpSpreadsheet实现导出Excel时带下拉框列表(可支持联动)

这篇博客介绍了如何利用PhpSpreadsheet库在PHP中生成带有下拉列表的Excel文件,详细讲解了核心代码实现联动下拉框的功能。
摘要由CSDN通过智能技术生成
最终效果

在这里插入图片描述

核心代码
<?php
// 需要的扩展
use PhpOffice\PhpSpreadsheet\Cell\DataValidation;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\NamedRange;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
?>

class Excel extends Controller
{
   

	/**
     * @name: 导出下拉列表Excel
     * @author: Turbo
     * @Date: 2022-03-30 02:05:24
     */    
    public function exportselectexcel()
    {
   
        // 定义表头
        $header = [
            'A1' => '门店',
            'B1' => '公寓', 
            'C1' => '门牌号', 
            'D1' => '记账类型', 
            'E1' => '记账项目', 
            'F1' => '支出类型', 
            'G1' => '费用分类', 
            'H1' => '金额', 
            'I1' => '记账日期', 
            'J1' => '收款人', 
            'K1' => '收款人帐号', 
            'L1' => '开户支行',
            'M1' => '备注'
        ];

        // 下拉数据[这里模拟出来数据格式,实际情况从数据库获取数据并整理成下列数据格式]
        $oneData = [
            [
                'id' => 1,
                'title' => '我是A',
                'children' =>
                    [
                        [
                            'id' => 2,
                            'title' => '我是A的下级A1',
                            'children' =>
                                [
                                    [
                                        'id' => 3,
                                        'title' => '我是A1的下级A11'
                                    ],
                                    [
                                        'id' => 4,
                                        'title' => '我是A1的下级A12'
                                    ]
                                ]
                        ],
                        [
                            'id' => 5,
                            'title' => '我是A的下级A2',
                            'children' =>
                                [
                                    [
                                        'id' => 6,
                                        'title' => '我是A2的下级A21'
                                    ],
                                    [
                                        'id' => 7,
                                        'title' => '我是A2的下级A22'
                                    ]
                                ]
                        ]
                    ]
            ],
            [
                'id' => 1,
                'title' => '我是B',
                'children' =>
                    [
                        [
                            'id' => 2,
                            'title' => '我是B的下级B1'<
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在导出Excel 中添加下拉列表,你可以使用 js-xlsx 库中的 `worksheet` 对象的 `!dataValidation` 属性。具体实现步骤如下: 1. 首先,定义一个下拉列表数组,如下所示: ```javascript var dropDownData = ["Option 1", "Option 2", "Option 3"]; ``` 2. 然后,创建一个 `worksheet` 对象,并在需要下拉列表的单元格中添加 `!dataValidation` 属性,如下所示: ```javascript var worksheet = XLSX.utils.json_to_sheet([ { Name: "John Doe", Age: 31, Gender: dropDownData[0] }, { Name: "Jane Doe", Age: 29, Gender: dropDownData[1] }, { Name: "Bob Smith", Age: 45, Gender: dropDownData[2] } ]); worksheet['!dataValidation'] = [ { ref: 'C1:C3', validation: { type: 'list', formulae: ['"' + dropDownData.join(',') + '"'] } } ]; ``` 上述代码中,我们在第三列(即列名为 "Gender" 的列)中添加了下拉列表。我们使用 `!dataValidation` 属性来指定下拉列表的选项,使用 `ref` 属性来指定下拉列表应用的单元格范围,使用 `validation` 属性来指定下拉列表的类型和选项。 3. 最后,将 `worksheet` 对象添加到 `workbook` 对象中,并导出 Excel 文件,如下所示: ```javascript var workbook = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1"); XLSX.writeFile(workbook, "example.xlsx"); ``` 上述代码将 `worksheet` 对象添加到 `workbook` 对象中,并将其保存为名为 "example.xlsx" 的 Excel 文件。 这样,导出Excel 文件中就会包含一个下拉列表了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值