天天看點

ThinkPHP6.x,使用PHPExcel擷取資料後插入到資料庫中

TP6引入PHPExcel,需要用composer下載下傳PHPExcel類庫

參數:$file_excel,是從控制器傳入的檔案路徑參數,檔案上傳參考的的是官方文檔中的上傳示例
<?php

namespace app\model;

use PHPExcel_IOFactory;
use think\Model;
use think\facade\Db;


class Admin extends Model
{

    public function insertGoods($file_excel)
    {
        /*讀取excel檔案,并進行相應處理*/
        $fileName = "./storage/" . $file_excel;
        if (!file_exists($fileName)) {
            exit("檔案" . $fileName . "不存在");
        }
        $objPHPExcel = PHPExcel_IOFactory::load($fileName); //擷取sheet表格數目
        $sheetCount = $objPHPExcel->getSheetCount(); //預設選中sheet0表
        $sheetSelected = 0;
        $objPHPExcel->setActiveSheetIndex($sheetSelected); //擷取表格行數
        $rowCount = $objPHPExcel->getActiveSheet()->getHighestRow(); //擷取表格列數
        $columnCount = $objPHPExcel->getActiveSheet()->getHighestColumn();
        $dataArr = array();
        /* 循環讀取每個單元格的資料 */
        for ($row = 2; $row <= $rowCount; $row++) {
            //列數循環 , 列數是以A列開始
            $n = 0;
            for ($column = 'A'; $column <= $columnCount; $column++) {
                $dataArr[$row][$column] = $objPHPExcel->getActiveSheet()->getCell($column . $row)->getValue();
            }
        }
        // halt($dataArr);
        $goods = [];
        foreach ($dataArr as $k => $v) {
            $goods[$k]['goods_id'] = $v['D'];
            $goods[$k]['goods_name'] = $v['C'];
            $goods[$k]['order_amount'] = $v['K']*100;     //*100 讓資料以整數存儲
        }
        $insert_num =  Db::name('goods')
            ->limit(100)
            ->insertAll($goods);
        return $insert_num; //傳回插入條數
    }
}