【php】php去除excel导入时的空格

news/2024/7/21 5:49:22 标签: php, excel, 开发语言

背景

PHPExcel_1.8.0导入excel,遇到trim无法处理的空格。
在这里插入图片描述

解决方案

$excelVal = preg_replace(“/(\s| | |\xc2\xa0)/”, ‘’, $excelVal);

完整代码

thinkphp5代码


function readExcel($file)
{
    require_once EXTEND_PATH . 'PHPExcel_1.8.0/Classes/PHPExcel.php';
    $reader = new PHPExcel_Reader_Excel2007();
    if (!$reader->canRead($file)) {
        $reader = new PHPExcel_Reader_Excel5();
        if (!$reader->canRead($file))
            exit(json_encode(['status' => 0, 'msg' => '请选择Excel文件']));
    }
    return $reader->load($file);
}

$excel = readExcel($_FILES['file']['tmp_name']);

$sheet = $excel->getSheet(0);
$maxRow = $sheet->getHighestRow();
$maxCol = $sheet->getHighestColumn();
if ($maxRow < 1) {
    output(0, 'EXCEL里面没有内容');
}

$rs = array();
for ($nowRow = 0; $nowRow < $maxRow; $nowRow++) {
    for ($nowCol = 0; $nowCol < Helper::xyChange($maxCol); $nowCol++) {
        $address = Helper::xyChange($nowCol + 1) . ($nowRow + 1);
        $excelVal = trim($sheet->getCell($address)->getValue());
        $excelVal = str_replace("\n", '', $excelVal);
        // 去除带空格,而trim去不掉的情况
        $excelVal = preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", '', $excelVal);
        $rs[$nowRow][] = trim($excelVal);
    }
}

/**
 * excel 坐标转换 (按需求,扩充)
 */
public static function xyChange($var)
{
    $var = trim($var);
    $arr = array(
        'A' => 1,
        'B' => 2,
        'C' => 3,
        'D' => 4,
        'E' => 5,
        'F' => 6,
        'G' => 7,
        'H' => 8,
        'I' => 9,
        'J' => 10,
        'K' => 11,
        'L' => 12,
        'M' => 13,
        'N' => 14,
        'O' => 15,
        'P' => 16,
        'Q' => 17,
        'R' => 18,
        'S' => 19,
        'T' => 20,
        'U' => 21,
        'V' => 22,
        'W' => 23,
        'X' => 24,
        'Y' => 25,
        'Z' => 26,
        'AA' => 27,
        'AB' => 28,
        'AC' => 29,
        'AD' => 30,
        'AE' => 31,
        'AF' => 32,
        'AG' => 33,
        'AH' => 34,
        'AI' => 35,
        'AJ' => 36,
        'AK' => 37,
        'AL' => 38,
        'AM' => 39,
        'AN' => 40,
        'AO' => 41,
        'AP' => 42,
        'AQ' => 43,
        'AR' => 44,
        'AS' => 45,
        'AT' => 46,
        'AU' => 47,
        'AV' => 48,
        'AW' => 49,
        'AX' => 50,
        'AY' => 51,
        'AZ' => 52,
    );
    if (is_numeric($var)) {
        foreach ($arr as $k => $v) {
            if ($v == $var) {
                return $k;
            }
        }
        return false;
    } else {
        if (isset($arr[$var])) {
            return $arr[$var];
        }
        return false;
    }
}
            

http://www.niftyadmin.cn/n/5339324.html

相关文章

万界星空科技MES系统的生产管理流程

对于生产型工厂来说&#xff0c;车间生产流程无疑是最重要的管理环节&#xff0c;繁琐的生产细节让企业很难找到合理的生产管理方法&#xff0c;导致人工效率低、错误多、成本高。如果想要解决这些问题&#xff0c;工厂就必须要有一套自己的生产管理系统&#xff0c;这样才能提…

大学生图像采集上传成功的秘诀被破解了‼️

✅大学生毕业图像采集上传成功了我喜欢的 大学生图像采集可以自己上传 尤其是毕业采集&#xff0c; 很多同学都需要自己拍照上传&#xff0c;只要你照片人像比例对&#xff0c; 像素和大小对&#xff0c;真的分分钟上传成功&#xff01; 毕业采集照片要求&#xff1a; 像素480*…

12.spring boot 启动源码智能装配(二)

目录 概述智能装配装配 AutoConfiguration 工作原理@EnableAutoConfiguration@AutoConfigurationPackage关键代码断点结束概述 spring boot 版本 2.6.13 spring boot 启动源码(一) 涉及 SpringApplication 中静态与实例方法 run 方法源码解析、配置文件和 Actuator 工作原理 s…

AcWing P89:a^b(快速幂)

问题描述 求 a 的 b 次方对 p 取模的值。 输入格式 三个整数 a, b, c 在同一行用空格隔开。 输出格式 输出一个整数&#xff0c;表示 a^b mod p 的值。 数据范围 输入样例 3 2 7 输出样例 2 解题思路 解法&#xff1a;位运算&#xff0c;快速幂。 根据数学知识&…

电路分析 第八章(正弦电流电流的分析)

一、阻抗与导纳 1、概述 &#xff08;1&#xff09;上一章中介绍的三种基本无源元件电阻、电感和电容的伏安特性相量形式如下所示。 &#xff08;2&#xff09;电阻、电感和电容的电压相量与电流相量之比等于一个复数&#xff0c;于是可以写出一个统一形式 式中&#xff0c;Z…

7.前端--CSS-复合选择器

1.什么是复合选择器 复合选择器是由两个或多个基础选择器&#xff0c;通过不同的方式组合而成的&#xff0c;可以更准确、更高效的选择目标元素&#xff08;标签&#xff09; 常用的复合选择器包括&#xff1a;后代选择器、子选择器、并集选择器、伪类选择器等等 2.后代选择器 …

matlab Robotics Toolbox

工具箱下载地址&#xff1a;ROBOTICS TOOLBOX 安装教程 笛卡尔运动规划 在MATLAB中&#xff0c;ctraj和jtraj是两个不同的函数&#xff0c;主要用于控制系统和机器人学中的轨迹规划。它们之间的主要区别在于它们处理的问题类型和使用方式。 ctraj&#xff08;连续时间轨迹规划…

PLC-IoT 网关开发札记(5):将本地数据库作为资产打包发布到 App

App需求&#xff1a;保存物模型 什么是物模型 在项目开发中&#xff0c;用到了本地数据库&#xff0c;这个本地数据库记录了系统的物模型。所谓物模型就是对某一个设备的可操纵属性的定义&#xff0c;每一个设备包括了一个或者多个属性&#xff0c;通过获取这些属性的当前值可…