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; //傳回插入條數
}
}