获取excel文件并写入数据库-程序员宅基地

技术标签: php  

<?php

//引入类库
include "../../jcsrm/lib/phpexcel/PHPExcel.php";
include "../../jcsrm/config.php";
// include "../lib/phpexcel/PHPExcel.php";
// include "../config.php";
//include "../lib/phpexcel/PHPExcel/IOFactory.php"
/*读取excel文件,并进行相应处理*/
ini_set('memory_limit', '1024M');
$date = date("Ymd");
set_time_limit (0);
date_default_timezone_set("PRC");
$stime1=microtime(true); //用了来获取运行开始时间
  // 读取excel文件
  try {
    
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcel = $objReader->load($inputFileName);
  } catch(Exception $e) {
    
    die("加载文件发生错误");
  }
 $startTime = time(); //返回当前时间的Unix 时间戳
 
PHPExcel_CachedObjectStorageFactory::cache_to_wincache; //解决内存问题
// echo $objPHPExcel = PHPExcel_IOFactory::load($fileName);//获取sheet表格数目
$sheet = $objPHPExcel->getSheet();//默认选中sheet0表
$rowCount = $sheet->getHighestRow();//获取表格行数
$columnCount = $sheet->getHighestColumn();//获取表格列数

$etime1=microtime(true);//获取程序执行结束的时间
$total1=$etime1-$stime1;   //计算差值

ini_set('execution_time', 2000000);//秒为单位,自己根据需要定义
$stime=microtime(true); 
$date = date("Ymd");
$inputFileName = "../wuhandata/07_orderlist/sz_orderlist_"."$date".".xlsx";
include"../getExcelFunction.php";


 
//  addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。

// 预定义字符是:

// 单引号(')
// 双引号(")
// 反斜杠(\)
// NULL

// $search = array(" "," ","\n","\r","\t",";",";");
// $replace = array("","","","","","","");
// str_replace($search, $replace, $str);
$count = 0;
        for($currentRow =2;$currentRow <= $rowCount;$currentRow++)
        {
    
//if($currentRow>$rowCount)  {break; } else{ continue;}
         $barcode= addslashes($objPHPExcel->getActiveSheet()->getCell("A".$currentRow)->getValue());//获取A列的值


         $order_no= addslashes($objPHPExcel->getActiveSheet()->getCell("B".$currentRow)->getValue());//获取B列的值


         $project_code= addslashes($objPHPExcel->getActiveSheet()->getCell("C".$currentRow)->getValue());//获取C列的值


         $fg_part_no= addslashes($objPHPExcel->getActiveSheet()->getCell("D".$currentRow)->getValue());//获取D列的值


         $serial_number= addslashes($objPHPExcel->getActiveSheet()->getCell("E".$currentRow)->getValue());//获取E列的值


         $material_part_no= addslashes($objPHPExcel->getActiveSheet()->getCell("F".$currentRow)->getValue());//获取F列的值


         $material_name= addslashes($objPHPExcel->getActiveSheet()->getCell("G".$currentRow)->getValue());//获取G列的值


         $mat_parameter= addslashes($objPHPExcel->getActiveSheet()->getCell("H".$currentRow)->getValue());//获取H列的值


         $qty= addslashes($objPHPExcel->getActiveSheet()->getCell("I".$currentRow)->getValue());//获取I列的值


         $unit= addslashes($objPHPExcel->getActiveSheet()->getCell("J".$currentRow)->getValue());//获取J列的值


         $vendor= addslashes($objPHPExcel->getActiveSheet()->getCell("K".$currentRow)->getValue());//获取K列的值

         $upload_time=date("Y-m-d H:i:s");
         //$serial_number= addslashes($objPHPExcel->getActiveSheet()->getCell("K".$currentRow)->getValue());//获取L列的值


         iconv_set_encoding ( "internal_encoding" ,"UTF-8") ;//iconv_set_encoding("internal_encoding", "UTF-8");
        // $material_name=iconv('utf-8','utf-8', $material_name);//消除乱码
         //$vendor=iconv('utf-8','utf-8', $vendor);//消除乱码

         $sql1 = "INSERT INTO  x_orderlist
        (barcode,order_no,project_code,fg_part_no,material_part_no,material_name,mat_parameter,qty,unit,vendor,serial_number,upload_time)
        VALUES
        ('".$barcode."','".$order_no."','".$project_code."','".$fg_part_no."',
        '".$material_part_no."','".$material_name."',
        '".$mat_parameter."','".$qty."','".$unit."','".$vendor."','".$serial_number."','".$upload_time."')";


$sql2 = "SELECT * FROM x_orderlist WHERE barcode = '$barcode'";
$retval2= mysqli_query( $db, $sql2);
$selectBarcode = mysqli_fetch_array($retval2,MYSQLI_ASSOC);


$sql3 = "UPDATE x_orderlist set order_no = '$order_no',project_code = '$project_code',fg_part_no='$fg_part_no',material_part_no='$material_part_no',material_name='$material_name',mat_parameter='$mat_parameter',qty='$qty',unit='$unit',vendor='$vendor',serial_number='$serial_number',upload_time='$upload_time' where barcode='$barcode' ";


if($selectBarcode['order_no'] == null){
    //判断该订单是否存在,如果不存在就执行插入语句
  $retval1 = mysqli_query( $db, $sql1);
  echo "<br>插入<br>";
}
else{
    
  $retval3 = mysqli_query( $db, $sql3);//如果存在就执行更新语句
  echo "更新";
} 
        
$count++;

//if($currentRow==$rowCount+1){break;}


}
mysql_close($db);
         


$etime=microtime(true);//获取程序执行结束的时间
$total=$etime-$stime;   //计算差值
echo "<br />读取excel执行时间为:{
      $total1} 秒";
echo "<br />写入数据库执行时间为:{
      $total} 秒";
echo "<div>行数: ".$rowCount."  列数:".$columnCount."</div>";
//循环结束,判断全部数据是否插入

      if($currentRow > $rowCount){
    

      //echo '文件插入成功!';

      $message='文件上传成功!'; 
      print "{success:true,msg:'".$message."'}";

      }
      else {
    

      //echo '文件插入失败!';    

      $message='文件上传失败!';  
      print "{success:false,msg:'".$message."'}";

      }      


  
// echo '1';
  ?>
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44345664/article/details/109079203

智能推荐

linux 排除某个目录 --exclude_du排除目录-程序员宅基地

1. du -sh /* 排除目录proc# du -sh /* --exclude="proc"参考: 1.在du命令里如何排除其中一个目录 _du排除目录

关于ThinkPHP框架开发微信公众号在微信后台配置服务器URL提示Token验证失败的解决方案-程序员宅基地

关于ThinkPHP框架开发微信公众号在微信后台配置服务器URL提示Token验证失败的解决方案

消息队列-RabbitMQ应用场景和消息确认机制_rabbitmq消息队列的使用场景-程序员宅基地

.1 RabbitMQ 消息队列1.1 使用场景_rabbitmq消息队列的使用场景

Ubuntu下使用Docker部署python的流程(亲测可用)_yht@ubuntu:~/webase-deploy$ python3 deploy.py pull_只搬烫手的砖的博客-程序员宅基地

采用Docker的方式部署python的流程:1、Docker hub拉取python镜像。2、创建容器并在容器内增加项目所需第三方库3、将步骤二的容器制作为镜像4、将镜像用于内网环境。_yht@ubuntu:~/webase-deploy$ python3 deploy.py pulldockerall start pull docke

tomcat之一:指定tomcat运行时JDK版本(用于配置同一电脑不同jdk和tomcat版本的需求)_一个tomcat可以运行不同jdk打出来的包吗-程序员宅基地

tomcat作为日常开发的web应用服务器,给开发测试带来了很多便利,tomcat的运行依赖JDK的支持,在安装JDK时经常会配置环境变量:JAVA_HOME、CLASSPAT,且需要添加path变量。把应用部署到tomcat下时大多数不需要修改运行环境,但是有时候需要修改JDK的版本,从可以修改tomcat运行时的JDK版本,我们可以知道使用tomcat时不时必须要配置JDK环境变量,因为我们可......_一个tomcat可以运行不同jdk打出来的包吗

使用 minikube 快速上手 Kubernetes | v1.7.3-程序员宅基地

安装 minikube 踩坑和填坑。环境说明宿主机的环境操作系统:Windows 10虚拟化:VirtualBox 6.0说明:在 Win 10 系统里尝试过 Hyper-V,感觉不好用,所以还是回归到了 VirtualBox。如果你用的是 Hyper-V,或者是 MacOS/Linux 操作系统,中间部分流程应该也可以参考。如果有疑问可以查看 官方文档。版本Miniku...

随便推点

STM32F107的串口通讯总结_stm32f107串口通信-程序员宅基地

STM32F107的串口通讯总结STM32F107的串口通讯总结 1. STM32的一般规律,首先要使用串口必先使能串口时钟,比如串口1: RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); 2. 串口使用的GPIO口设置: 首先使能GPIO的时钟RCC_APB2PeriphClockCmd(RCC_stm32f107串口通信

C语言程序设计习题_c语音编程设计练习-程序员宅基地

文章目录1.用筛选法求100之内的素数2.用选择法对10个整数进行排序。3.求一个3*3的整型矩阵对角线元素之和4.有一个已排好的数组,要求输入·一个数后,按原来的排序规则将它插入数组中。5.将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1,要求改为1,4,5,6,8.6.输出以下的杨辉三角(要求输出10行)7.输出魔方阵。所谓魔方阵是指这样的方阵,它的每一行,每一列和对角线之和均相等。求输出1-n的平方构成的魔方阵。8.找出一个二维数组的鞍点,即该位置上的元素在该行最大,在该列上最小,也_c语音编程设计练习

ETL工具kettle的性能优化_kettle提交记录数量-程序员宅基地

性能调优在整个项目中尤为重要。对于初级开发人员往往都不知道如何对性能进行调优。其实性能调优主要分为两个方面:一方面是硬件方面的调优,一方面是软件方面的调优。本文章主要介绍Kettle方面的性能调优以及效率的提升。一、Kettle性能调优1. commit size表输出的提交记录数量(默认1000),具体根据数量大小来修改。修改前速度(7447/s):修改后(7992/s):2. 数据库连接调参基于上层优化方案继续调优useServerPrepStmts=falserewriteBatc_kettle提交记录数量

贝叶斯算法-程序员宅基地

2010-09-17 13:09 by T2噬菌体,154746阅读,49评论,收藏,编辑0、写在前面的话 我个人一直很喜欢算法一类的东西,在我看来算法是人类智慧的精华,其中蕴含着无与伦比的美感。而每次将学过的算法应用到实际中,并解决了实际问题后,那种快感更是我在其它地方体会不到的。 一直想写关于算法的博文,..._贝叶斯算法中主要强调了哪种思想

基于Win32 C/C++ SDK Gui 松散框架--VSCode Snippet(抽象快速开发工具)_snippet在线工具_IBMInfo78的博客-程序员宅基地

Win32SDKC/C++Gui高效程序之高效开发工具。基于Windowsx.H宏或自编代码。免费分发,仅需前往。编辑器,还是VSCode牛逼。该代码主要适用于C++,C语言需容我稍作修改。该代码集合共15000+行,VSCode Snippet最大可开到20000+行。目前涵盖Win32常见、常用基本类创建、函数、Setter/Getter;并包含Win32主要、常用WM_消息;融合了MessageCrack的功能,并完善了其没有完成的部分函数。并包含了Gdi绘画典型、应用案例。望助我朝..._snippet在线工具

SUSE Linux Enterprise Server 10 安装 Oracle 10g-程序员宅基地

由于工作需要,需要在SuSE 10上安装Oracle 10g,进行相关测试,做了一下笔记。一位同事说得好,记性好不如烂笔头。1.安装必要的包,安装命令是:rpm -ivh libaio-0.3.104-14.2.x86_64.rpmrpm -ivh libaio-devel-0.3.104-14.2.x86_64.rpm2.建立oracle用户groupadd dbau...