首页 > 编程语言 >使用PHPexcel删除指定的单元格

使用PHPexcel删除指定的单元格

时间:2023-01-03 16:34:32浏览次数:46  
标签:objPHPExcel 删除 column 字母 单元格 key PHPexcel

,使用PHPexcel删除指定的单元格(表头)

/**
     * 导出 删除指定的单元格
     * @param $objPHPExcel 类
     * @param array $remove_column  需要删除的单元格
     * @date 2023/1/3
     * @return void
     */
    private function remove_column($objPHPExcel, $remove_column)
    {
        //单元格模板值,用于匹配要删除的列(在excel模板第一列)
        $cell_val = '';
        //单元格总列数
        $highestColumn = $objPHPExcel->getActiveSheet()->getHighestColumn();
        // 获取字母中的key
        $codeNum = $this->getCodeNumber('', $highestColumn);
        for ($i = 0; $i <= $codeNum;) {
            // 根据 key 获取字母
            $column = $this->getCodeNumber($i);
            //列数是以A列开始
            $cell_val = $objPHPExcel->getActiveSheet()->getCell($column . "1")->getValue();
            //移出没有权限导出的列
            //移出后column不能加1,因为当前列已经移出加1后会导致删除错误的列
            if (strlen($cell_val) > 0 && in_array($cell_val, $remove_column)) {
                $objPHPExcel->getActiveSheet()->removeColumn($column);
            } else {
                $i++;
            }
        }
    }

由于 php 中使用 for 或者 foreach 循环 A-BA 字母时出现了字符编码的问题。PS:用不用ord 、 chr 都一样会有问题

for ($i = ord('A'); $i <= ord('BA'); $i++) {
    echo chr($i) . '<br/>';
}

 

 

 所以我这边借用了一个方法( PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC ),因为目前的需求就到 ZZ。所以设置为 701

/**
     * 循环字母 A-ZZ 并 获取字母中的 key 和 value
     * @param $key
     * @param $code
     * @date 2023/1/3
     * @return false|int|mixed|string
     */
    private function getCodeNumber($key, $code = false)
    {
        // 循环 A-ZZ
        for ($i = 0; $i <= 701; $i++) {
            $y = ($i / 26);
            if ($y >= 1) {
                $y = intval($y);
                $yCode[] = chr($y + 64) . chr($i - $y * 26 + 65);
            } else {
                $yCode[] = chr($i + 65);
            }

        }
        // 获取 key
        if ($code) {
            return array_search($code, $yCode);
        }
        // 获取 value
        return $yCode[$key];
    }

最后调用并下载

 

标签:objPHPExcel,删除,column,字母,单元格,key,PHPexcel
From: https://www.cnblogs.com/wjm956/p/17022616.html

相关文章

  • React 小案例 列表添加删除功能
    所有代码importReact,{Component,Fragment}from'react'classTodoListextendsComponent{constructor(props){super(props);this.state={......
  • 将 RAC 克隆到单个实例后,如何删除对其他线程的任何引用
    背景 RAC数据库的节点克隆过程创建了一个克隆的单实例RAC数据库,因此新的克隆数据库包含一个额外的线程/实例,就像在原始RAC环境中一样。下面详细记录一下RAC变单机的......
  • python技能树——删除字符串的空格
    python技能树——删除字符串的空格来看一道题:描述牛牛、牛妹和牛可乐都是Nowcoder的用户,某天Nowcoder的管理员由于某种错误的操作导致他们的用户名的左右两边增加了一......
  • clickhouse常用SQL语句,查询、建表、数据复制迁移、删除等
    clickhouse常用SQL语句,查询、建表、数据复制迁移、删除等坚持是一种态度于2022-02-1817:58:35发布1646收藏6分类专栏:数据库及存储技术大数据开发文章标签:sql......
  • Python模块之dedent 删除字符串中的前导空格
    作用:删除字符串中的前导空格必要操作:>>>fromtextwrapimportdedent 帮助查看:>>>help(dedent)方法(函数):fromtextwrapimportdedenttext="""......
  • 怎么把人从照片里删除?
    1、介绍以下图为例,把人物移除掉。 2、步骤2.1、使用快速选择工具将人物选中。    2.2、扩大选择区域点击菜单的“选择“--修改--扩展,数值添4,扩大选择区域......
  • 每日算法之删除链表中重复的结点
    JZ76删除链表中重复的结点题目给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)例如,给定的二叉树是{1,2,3,#,#,4,5}该二叉树之......
  • Linux Debian11创建新用户和删除用户
    一、Debian创建新用户1.创建新用户首先,要创建用户,当前用户必须是root用户或者sudo用户。使用下面adduser命令创建一个用户名为test的sudo用户,按照提示输入密码,使......
  • c删除文件remove/unlink区别
    我们知道,Linux环境下经常使用rmdir来删除一个空文件夹,使用unlink函数删除文件链接。除此之外,C中的remove函数的功能也是删除文件,那么他们之间有什么区别?通过man来......
  • Springboot中通过模糊匹配Redis中的key来删除对应的数据
    Springboot中通过模糊匹配Redis中的key来删除对应的数据在指定情况中,redis中存储的key值为指定前缀+可变的id组成,所以需要批量删除改前缀存储的所有数据,那么由于key的不确......