PHPExcel读取表格 从Excel导入

从Excel导入

    public function batchUpdateLevel(Request $request) {
        $files = $request->getUploadedFiles();
        $tmpFileName = $files['filename']->file;
        /** @var $reader \PhpOffice\PhpSpreadsheet\Reader\Xlsx */
        $reader = new Xlsx();
        /** @var $excel \PhpOffice\PhpSpreadsheet\Spreadsheet */
        $excel = $reader->load($tmpFileName);
        /** @var $sheet \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet */
        $sheet = $excel->getActiveSheet();
        // 模板有效数据从第4行开始
        $row = 4;
        // $code = $sheet->getCell("A4" )->getValue();
        $customerLevels = [];
        // 最大循环次数65535
        for ($maxRows = 65535; $maxRows > 0; $maxRows -= 1) {
            $code = $sheet->getCell(sprintf("A%d", $row))->getValue();
            $name = $sheet->getCell(sprintf("B%d", $row))->getValue();
            $level = $sheet->getCell(sprintf("C%d", $row))->getValue();
            if (is_null($code)) {
                break;
            }
            array_push($customerLevels, [
                'code' => $code,
                'name' => $name,
                'level' => $level
            ]);
            $row += 1;
        }
// echo json_encode($customerLevels, JSON_UNESCAPED_UNICODE); die;
// ...
    }

如果是指定目录,不是通过上传文件

对于windows系统汉字要转换编码

$path ='./Temp/customer/客户等级确认表.xlsx';
if (strncmp(DIRECTORY_SEPARATOR, "\\", 1) == 0) {
    $path = iconv("utf-8", "gb2312", $path);
}

但是后面还是有bug, fopen可以打开, 执行到  $excel->getActiveSheet(); 会报错

所以还是不能用中文名

对于日期的读取

/** @var $expire string "12/31/2021" */
$expire = $sheet->getCell(sprintf("H%d", $row))->getFormattedValue();

转换为时间戳:

$expireAt = (new \DateTime($expire))->getTimestamp();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fareast_mzh

打赏个金币

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值