// 注:只是在此做下记录,有兴趣的可以参考,不做实际教程文档
<?php
/**
* Created by IntelliJ IDEA.
* User: davis
* Date: 2019-03-12
* Time: 16:01
*/ namespace CommonBundle\Command; use AdminBundle\Entity\LiteList;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Wiz\AdminTools\Bundle\AdminToolsBundle\Entity\DictionaryTranslation; class ImportLiteListCommand extends ContainerAwareCommand
{
protected function configure()
{
$this
->setName('isa:import-lite-list')
->addArgument('path', InputArgument::OPTIONAL, '键入Excel文件路径!')
->setDescription('import lite List data');
} protected function execute(InputInterface $input, OutputInterface $output)
{
$em = $this->getContainer()->get('doctrine.orm.entity_manager');
$path = $input->getArgument('path');
if (file_exists($path) && is_dir($path) == false && pathinfo($path, PATHINFO_EXTENSION) == 'xlsx') {
//导入数据前,先清空表,并把自增id重置
$emConn = $this->getContainer()->get('doctrine.orm.entity_manager')->getConnection();
$emConn->executeQuery("DELETE FROM `isa_lite_list`");
$emConn->executeQuery("alter table `isa_lite_list` auto_increment =1;");
$emConn->executeQuery("alter table `isa_lite_list_translation` auto_increment =1;"); $excel = new \PHPExcel();
try {
$inputFileType = \PHPExcel_IOFactory::identify($path);
$objReader = \PHPExcel_IOFactory::createReader($inputFileType);
$excel = $objReader->load($path);
} catch (\Exception $e) {
$output->writeln('<error>文件加载失败!</error>');
die;
}
$sheet = $excel->getSheet(0);
$highestRow = $sheet->getHighestRow(); //读取到excel中数据
for ($i = 1; $i <= $highestRow; $i++) {
$title = $excel->getActiveSheet()->getCell("A" . $i)->getValue();
$energy = sprintf("%.2f", $excel->getActiveSheet()->getCell("B" . $i)->getValue());
$water = sprintf("%.2f", $excel->getActiveSheet()->getCell("C" . $i)->getValue());
//写入table中
$liteList = new LiteList();
$trans = new DictionaryTranslation();
$liteList->setSlug('Lite-' . $i);
$liteList->setStatus(2);
$liteList->setEnergySaving($water);
$liteList->setWaterSaving($energy);
$liteList->setInputAt(new \DateTime("-{$i} second"));
$trans->setLocale('en');
$trans->setTranslatable($liteList);
$liteList->translate('en')->setTitle($title);
$liteList->mergeNewTranslations();
$em->persist($liteList);
$em->flush();
if ($i == 1)
$output->writeln('<comment>数据导入中...</comment>');
}
$output->writeln('<info>Success!!</info>');
} else {
$output->writeln('<error>文件类型或路径有错,请检查!!</error>');
}
}
} //help

//在命令行执行脚本,数据导入成功


在 Symfony Command中自定义脚本把Excel数据导入到数据库中的更多相关文章

  1. java实现EXCEL数据导入到数据库中的格式问题的解决

    之前作为项目甲方,加之java接触不多,在java web开发方面都是打下手的份. 对于EXCEL数据导入到数据库这个问题一直老是出现格式原因而导入失败也是未免惆怅,开发团队也是只说回去检查一下格式. ...

  2. asp.net Excel数据导入到数据库中

    protected void Btn_Import_Click(object sender, EventArgs e) { bool Result_Import = false; bool Resul ...

  3. NOPI Excel 数据导入到数据库

    /// <summary> /// 上传excel文件 并将文件数据导入到数据库 /// </summary> /// <param name="file&qu ...

  4. shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中

    shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...

  5. 将Excel数据导入mysql数据库的几种方法

    将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面 ...

  6. 把Excel数据导入到数据库

    引入命名空间 using System.IO; using System.Data; using System.Data.OleDb; 引入命名空间 首先要把Excel上传到服务器 //上传Excel ...

  7. 利用TOAD实现把EXCEL数据导入oracle数据库

    利用TOAD实现把EXCEL数据导入oracle数据库 工具:   Toad11.7z(百度搜索,直接下载) 1.将Excel文件中某些字段导入到Oracle数据库的对应表 连接想要导入的数据库 ,然 ...

  8. c#将Excel数据导入到数据库的实现代码

    这篇文章主要介绍了c#将Excel数据导入到数据库的实现代码,有需要的朋友可以参考一下 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: 代码: 代码如下: using Syste ...

  9. 如何将EXCEL表导入ORACLE数据库中?【转】

    来源:https://zhidao.baidu.com/question/383828330.html?qbl=relate_question_2&word=excel%20%B1%ED%CA ...

随机推荐

  1. 【ES6】最常用的es6特性(一)

    参考链接: http://www.jianshu.com/p/ebfeb687eb70 http://www.cnblogs.com/Wayou/p/es6_new_features.html 1.l ...

  2. 26、springboot与消息

    概述: 1.大多应用中,可通过消息服务中间件来提升系统异步通信.扩展解耦能力消息服务中两个重要概念:           2.消息代理(message broker)和目的地(destination) ...

  3. No.7 - 使用 animate.css 实现一个优雅的登录框

    <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...

  4. JDK(五)JDK1.8源码分析【集合】HashMap

    本文转载自无始无终,原文连接 HashMap 在 JDK 1.8 后新增的红黑树结构 传统 HashMap 的缺点 JDK 1.8 以前 HashMap 的实现是 数组+链表,即使哈希函数取得再好,也 ...

  5. 修改微软RDP远程桌面端口

    远程桌面服务所使用的通信协议是Microsoft定义RDP(Remote Desktop Protocol)协议,RDP协议的TCP通信端口号是3389. 有时候为了安全起见,或者其他的需要,我们常需 ...

  6. POJ 1384 Intervals (区间差分约束,根据不等式建图,然后跑spfa)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1384 Intervals Time Limit: 10000/5000 MS (Java/Others ...

  7. ubuntu snmp Error: unknown payload OID

    ubuntu snmp Error: unknown payload OID 2013-11-12 15:51:48 标签:ubuntu Error snmp unknown payload OID ...

  8. 解决不能修改 Mysql 慢查询 long_query_time 值的问题

    起因:想修改一下自己电脑上的MySQL的 long_query_time 值,以此来测试 MySQL的慢查询功能. 可是,无论怎么改,show variables like 'long_query_t ...

  9. python的requests模块爬取网页内容

    注意:处理需要用户名密码认证的网站,需要auth字段. # -*- coding:utf-8 -*- import requests headers = { "User-Agent" ...

  10. 【Linux】Linux文件跟目录管理

    熟悉Linux的大家都知道,在Linux中,一切皆文件,可能在有些人的理解中,Linux跟我们的Windows差不多,是都具有图形操作界面的一种操作系统,但是更深入的来说,Linux更偏向于用命令操作 ...