导入Excel

// 上传 Excel
    public function uploadExcel() {
        // 上传错误
        if ($_FILES['file']['error'] > 0) die("上传文件错误:{$_FILES['file']['error']}");

        // 文件类型读取内容
        $filePathinfo = pathinfo($_FILES['file']['name']);
        switch ($filePathinfo['extension']) {
            case 'xls':
                $fileData = $this->readExcel($_FILES['file']['tmp_name']);
                break;
            case 'csv':
                $fileData = $this->readCSV($_FILES['file']['tmp_name']);
                break;
            default:
                die('只支持此类型文件(xls/csv)导入!');
        }
        if (!$fileData) die('文件内容为空!');

        print_r($fileData);
    }

    /**
     * 读取Excel
     * @param string $filePath  文件路径
     * @param int $item         第一项(第一个工作表)
     * @return array|string
     * @throws PHPExcel_Exception
     * @throws PHPExcel_Reader_Exception
     */
    public function readExcel($filePath = '', $item = 0) {
        if (empty($filePath)) die('文件路径不能为空!');

        // 设置页面等待时间
        set_time_limit(0);
        // 不限制内存
        ini_set('memory_limit', '-1');
        // 获取当前文件地址
        $dqml = dirname(__FILE__);
        // 引入库
        require "{$dqml}/libs/PHPExcel.php";

        // 文件类型
        $fileType = PHPExcel_IOFactory::identify($filePath);
         if (!in_array($fileType, array('Excel5', 'Excel2007'))) die('导入的文件格式错误!');

        // 加载文件
        $objPHPExcelReader = PHPExcel_IOFactory::load($filePath);
        // 读取第一個工作表
        $sheet = $objPHPExcelReader->getSheet($item);
        // 取得总行数
        $highestRow = $sheet->getHighestRow();
        // 取得总列数(字母列转换为数字列 如:AA变为27)
        $highestColumm = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn());
        $data = array();
        // 外循环产生每一行
        for ($row = 1; $row <= $highestRow; $row++) {
            // 记录行总长度
            $totalLen = 0;
            // 内循环产生每一列
            for ($column = 0; $column <= $highestColumm; $column++) {
                // 数字列转换为字母列 如:27变为AA
                $value = $sheet->getCellByColumnAndRow($column, $row)->getValue();
                if (is_object($value)) $value = $value->__toString();

                $data[$row][] = $value;
                $totalLen += strlen(trim($value));
            }
            // 去掉空行
            if ($totalLen == 0) unset($data[$row]);
        }
        return array_values($data);
    }

    /**
     * 读取CSV
     * @param string $filePath  文件路径
     * @return array
     */
    public function readCSV($filePath = '') {
        if (empty($filePath)) die('文件路径不能为空!');

        $content = file_get_contents($filePath);
        $arr = preg_split('/\n/', $content);
        $data = array();
        foreach ($arr as $key => $value) {
            if ($value) $data[] = explode(',', trim($value));
        }
        return $data;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值