Yii实现Excel导入三级分类数据表
2016-11-28 19:11
176 查看
1.把已经下载好的PHPExcel类放入Vendor目录下
2.在项目入口文件index.PHP加载:
require dirname(dirname(__FILE__)).'/vendor/phpexcel/PHPExcel.php';
3.在config/web.php中的components键中加入:
'aliases' => [
'class'=>'PHPExcel', //如果不定义该类,将会报错。值就是在phpqrcode.php中定义的命名空间
'@phpqrcode' => '@vendor/phpexcel/PHPExcel/', //@phpqrcode 就是在phpqrcode.php中定义的命名空间,@vendor/phpqrcode 为该类的路径
],
4.直接上Controller.php代码
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use PHPExcel,PHPExcel_Reader_Excel2007,PHPExcel_Reader_Excel5,PHPExcel_IOFactory,PHPExcel_Cell;
class ShopCategoryController extends Controller{
public function actionImport(){
header("content-type:text/html;charset=utf-8");
$PHPExcel = new PHPExcel();
//print_r($PHPExcel);die;
$filePath = 'shop_category.xlsx';
//判断打开文件的方式
$objReader = new PHPExcel_Reader_Excel2007();
if(!$objReader->canRead($filePath)){
$objReader = new PHPExcel_Reader_Excel5();
if(!$objReader->canRead($filePath)){
echo 'no Excel';
return ;
}
}
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($filePath);
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$excelData = array();
for ($row = 1; $row <= $highestRow; $row++) {
for ($col = 0; $col < $highestColumnIndex; $col++) {
$excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
}
}
//print_r($excelData);die;
$res = array();
foreach($excelData as $key =>$val){
if(isset($res[$val[0]])){
$res[$val[0]][$val[1]][] = ltrim($val[2]);
}else{
$res[$val[0]] = [
$val[1]=>[
ltrim($val[2]),
]
];
}
}
9ab6
//echo '<pre>';
//print_r($res);
//exit();
$connect=Yii::$app->db;
foreach($res as $one_key =>$one_val){
//print_r($one_key); die; //一级分类:美食购物休闲娱乐、健身医疗保健旅游、文化、教育其他
$sql_add = "insert into shop_category(p_name,p_id) values('".$one_key."',0)";
$connect->createCommand($sql_add)->execute();
$level_one_id = $connect->getLastInsertID();
foreach($one_val as $two_key => $two_val){
print_r($two_key); // 二级分类:中餐东南亚餐西餐美食、日韩餐 小吃快餐。。。。。
$sql_add = "insert into shop_category(p_name,p_id) values('".$two_key."',$level_one_id)";
$connect->createCommand($sql_add)->execute();
$level_two_id = $connect->getLastInsertID();
foreach($two_val as $three_key =>$three_val){
$sql_add = "insert into shop_category(p_name,p_id) values('".$three_val."',$level_two_id)";
$connect->createCommand($sql_add)->execute();
}
}
}
echo "<script>alert('导入成功');window.history.go(-1);</script>";
}
}
2.在项目入口文件index.PHP加载:
require dirname(dirname(__FILE__)).'/vendor/phpexcel/PHPExcel.php';
3.在config/web.php中的components键中加入:
'aliases' => [
'class'=>'PHPExcel', //如果不定义该类,将会报错。值就是在phpqrcode.php中定义的命名空间
'@phpqrcode' => '@vendor/phpexcel/PHPExcel/', //@phpqrcode 就是在phpqrcode.php中定义的命名空间,@vendor/phpqrcode 为该类的路径
],
4.直接上Controller.php代码
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use PHPExcel,PHPExcel_Reader_Excel2007,PHPExcel_Reader_Excel5,PHPExcel_IOFactory,PHPExcel_Cell;
class ShopCategoryController extends Controller{
public function actionImport(){
header("content-type:text/html;charset=utf-8");
$PHPExcel = new PHPExcel();
//print_r($PHPExcel);die;
$filePath = 'shop_category.xlsx';
//判断打开文件的方式
$objReader = new PHPExcel_Reader_Excel2007();
if(!$objReader->canRead($filePath)){
$objReader = new PHPExcel_Reader_Excel5();
if(!$objReader->canRead($filePath)){
echo 'no Excel';
return ;
}
}
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($filePath);
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$excelData = array();
for ($row = 1; $row <= $highestRow; $row++) {
for ($col = 0; $col < $highestColumnIndex; $col++) {
$excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
}
}
//print_r($excelData);die;
$res = array();
foreach($excelData as $key =>$val){
if(isset($res[$val[0]])){
$res[$val[0]][$val[1]][] = ltrim($val[2]);
}else{
$res[$val[0]] = [
$val[1]=>[
ltrim($val[2]),
]
];
}
}
9ab6
//echo '<pre>';
//print_r($res);
//exit();
$connect=Yii::$app->db;
foreach($res as $one_key =>$one_val){
//print_r($one_key); die; //一级分类:美食购物休闲娱乐、健身医疗保健旅游、文化、教育其他
$sql_add = "insert into shop_category(p_name,p_id) values('".$one_key."',0)";
$connect->createCommand($sql_add)->execute();
$level_one_id = $connect->getLastInsertID();
foreach($one_val as $two_key => $two_val){
print_r($two_key); // 二级分类:中餐东南亚餐西餐美食、日韩餐 小吃快餐。。。。。
$sql_add = "insert into shop_category(p_name,p_id) values('".$two_key."',$level_one_id)";
$connect->createCommand($sql_add)->execute();
$level_two_id = $connect->getLastInsertID();
foreach($two_val as $three_key =>$three_val){
$sql_add = "insert into shop_category(p_name,p_id) values('".$three_val."',$level_two_id)";
$connect->createCommand($sql_add)->execute();
}
}
}
echo "<script>alert('导入成功');window.history.go(-1);</script>";
}
}
相关文章推荐
- Yii实现Excel导入三级分类数据表
- js实现excel数据导入
- 读取excel, 让用户选出的几个列,将数据导入到sql server,如何实现!
- Excel数据导入Mysql数据库的实现代码
- 利用PHP-ExcelReader实现PHP导入Excel数据[不通过CSV]
- 实现Excel数据批量导入到Access
- 怎么实现从excel表数据导入到sql server数据库中
- 一个存储过程实现将Excel数据导入数据库
- Excel数据导入Mysql数据库的实现代码
- asp.net实现excel数据到sql server的导入
- EXTJS学习系列提高篇:第二篇(转载)作者殷良胜,结合EXT2.2+C#.net实现将数据导入Excel的功能
- VB 实现数据快速导入EXCEL
- js实现excel数据导入
- datagrid数据导入EXCEL的实现方法及注意事项
- GeneXus中的grid数据导入至Excel中和Excel中数据导入至grid中的简单代码实现
- 怎样实现excel的数据导入到datagrid中?
- 用Java实现从Excel数据导入到Oracle数据库表中
- 利用PHP-ExcelReader实现PHP导入Excel数据[不通过CSV]
- 实现Excel数据导入到SQL2005中的方法
- asp.net中实现GridView中的数据导入到Excel中