thinkphp导入excel到mysql_Thinkphp5使用PHPExcel导入excel文件到数据库中

/**

* @param Request $request

* @return string

* @throws \PHPExcel_Exception

* @throws \PHPExcel_Reader_Exception

* @throws \think\db\exception\DataNotFoundException

* @throws \think\db\exception\ModelNotFoundException

* @throws \think\exception\DbException

* @author Bob

*/

public function uploadExcel(Request $request)

{

Loader::import('PHPExcel.PHPExcel', EXTEND_PATH);

Loader::import('PHPExcel.PHPExcel.IOFactory.PHPExcel_IOFactory', EXTEND_PATH);

Loader::import('PHPExcel.PHPExcel.Reader.Excel5', EXTEND_PATH);

$file = $request->file('excel');

$file_path = ROOT_PATH . 'public' . DS . 'upload' . DS . 'temp';

$file_name = Auth::$user['dep'] ? Auth::$user['dep'] . '_goodsin_' . time() : '0_goodsin_' . time();

$info = $file->move($file_path, $file_name);

if ($info) {

//echo $info->getFilename();

$exclePath = $info->getSaveName(); //获取文件名

$accept = strrchr($exclePath, '.');

$objReader = '';

if ($accept == '.xlsx') {

$objReader = \PHPExcel_IOFactory::createReader('Excel2007');

} elseif ($accept == '.xls') {

$objReader = \PHPExcel_IOFactory::createReader('Excel5');

}

$obj_PHPExcel = $objReader->load($file_path . DS . $exclePath, $encode = 'utf-8'); //加载文件内容,编码utf-8

$worksheet = $obj_PHPExcel->getsheet(0);

$excel_array = $worksheet->toArray(); //转换为数组格式

array_shift($excel_array); //删除第一个数组(标题);

$imageFilePath = ROOT_PATH . 'public' . DS . 'upload' . DS . 'imgtemp';//图片保存目录

foreach ($worksheet->getDrawingCollection() as $img) {

list ($startColumn, $startRow) = \PHPExcel_Cell::coordinateFromString($img->getCoordinates());//获取列与行号

$imageFileName = time() . mt_rand(100, 999);

/*表格解析后图片会以资源形式保存在对象中,可以通过getImageResource函数直接获取图片资源然后写入本地文件中*/

switch ($img->getMimeType()) {

case'image/jpg':

case'image/jpeg':

$imageFileName .= '.jpg';

imagejpeg($img->getImageResource(), $imageFilePath . DS . $imageFileName);

break;

case 'image/gif':

$imageFileName .= '.gif';

imagegif($img->getImageResource(), $imageFilePath . DS . $imageFileName);

break;

case 'image/png':

$imageFileName .= '.png';

imagepng($img->getImageResource(), $imageFilePath . DS . $imageFileName);

break;

}

$excel_array[$startRow - 2][$startColumn] = $imageFileName; //存到数组里

}

$data = [];

foreach ($excel_array as $k => $v) {

$data[$k]['brand_name'] = $v[0]; //商品品牌

$data[$k]['brand_id'] = $this->findByName($v[0]); //商品品牌

$data[$k]['name'] = $v[1]; //商品名称

$data[$k]['self_no'] = $v[2]; //商品自编号

$data[$k]['goods_no'] = $v[3]; //商品货号

$data[$k]['status'] = $v[4]; //商品状态

$data[$k]['status_collect'] = $v[5]; //集采状态

$data[$k]['unit'] = $v[6]; //计量单位

$data[$k]['stock'] = $v[7]; //库存

$data[$k]['price_market'] = $v[8]; //市场价格

$data[$k]['price_sell'] = $v[9]; //销售价格

$data[$k]['price_member'] = $v[10]; //会员价格

$data[$k]['price_collect'] = $v[11]; //集采价格

$data[$k]['cost_elevator'] = $v[12]; //电梯力费

$data[$k]['cost_statirs'] = $v[13]; //楼梯力费

$data[$k]['spec'] = $v[14]; //规格

$data[$k]['color'] = $v[15]; //颜色

$data[$k]['features'] = $v[16]; //商品特性

$data[$k]['sell_attr'] = $v[17]; //销售属性

$data[$k]['describe'] = $v[18]; //商品描述

$data[$k]['pic1'] = $v['T'] ?? null; //商品图片1

$data[$k]['pic2'] = $v['U'] ?? null; //商品图片2

$data[$k]['pic3'] = $v['V'] ?? null; //商品图片3

}

$commodity = new CommodityModel();

$commodity->saveAll($data);

unset($info);

unlink($file_path . DS . $file_name . $accept); //删除文件

} else {

return $file->getError();

}

}

转载声明:本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。

欢迎捐赠赞赏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值