刚刚开通博客,希望能够通过博客的形式记录自己的学习与成长,同时也希望能够和路上的同僚们多交流,共同进步

 小白  ->  大神  go! go! go!!

先总结一下前几天写的Excel导入吧,希望对正要着手做这个的人会有帮助

第一次做Excel导入,最开始有点懵,不知道要做什么,可是做了就会发现其实一共就4步:

1、接收文件并对文件格式进行校验

2、上传文件到指定目录

3、读取上传的Excel文件并循环取出需要的数据,处理成导入数据库用的数据格式

4、上传数据库

这里主要调用了 Spreadsheet_Excel_Reader.php 和 oleread.inc 两个类库文件 将这两个文件放到项目中的外部引用类库目录下就好了

Spreadsheet_Excel_Reader是用来读取Excel内容的工具

下面是针对导入Excel的功能实现写的类,其中批量加入数据库是封装的方法,直接换成你自己的就好了

<?php
class Excel2Db{
  public $filePath = "../../../../excel_file/";
public function __construct($filePath)
{
$this->filePath = $filePath;
     $this->insertExcel();
}
private function insertExcel(){
$file_name = $_FILES['excel']['name'];
$tmp_name = $_FILES['excel']['tmp_name'];
$file_size = $_FILES['excel']['size'];
$file_error = $_FILES['excel']['error'];
// 处理excel文件
$this->checkExcel($file_name,$file_size,$file_error);
// 上传excel文件
$uploadfilename = $this->d_file_move($file_name,$tmp_name);
if (isset($uploadfilename) && !empty($uploadfilename)) {
if ( file_exists($uploadfilename) && is_readable($uploadfilename)) {
// 读取上传的excel文件并导入数据库
$res_insert= $this->insertExceltoDatabase($uploadfilename);
          unlink($uploadfilename); //删除之前上传的文件
echo $res_insert;
}else{
die("<script>alert('上传文件不可读,请上传可读文件');history.back(-1);</script>");
}
}
else
{
showMessage("文件上传失败!");
}
} /**
* 处理excel文件
*/
private function checkExcel($file_name,$file_size,$file_error){
if ($file_name != '') {
$fileExcel = substr(strrchr($file_name,'.'), 1);
if ($fileExcel != 'xls') {
die("<script>alert('文件格式不正确,只可上传.xls类型的文件');history.back(-1);</script>");
}
if($file_size>512000){
die("<script>alert('文件过大,最大为500K');history.back(-1);</script>");
}
if($file_error!=0){
die("<script>alert('未知错误,文件上传失败');history.back(-1);</script>");
}
}else{
showMessage("Excel文件上传错误,请检查后重新上传!");
}
}
/**
* 上传文件方法
*/
private function d_file_move($file,$filetempname){
$filePath = $this->filePath;//上传文件的路径
if(!is_dir($filePath)) mkdir($filePath);//检查并创建文件夹
$time = date('YmdHis',time());//设置文件名,注意设置时区
$extend = strchr($file,'.');//获取文件后缀
$newname = $time.$extend;//设置上传后完整的文件名
$uploadfile = $filePath.$newname;//文件路径
if(file_exists($uploadfile)){
die("<script>alert('文件已存在,请重新上传');history.back(-1);</script>");
}
$res = move_uploaded_file($filetempname,$uploadfile);//通过move_uploaded_file函数移动文件到指定目录
if($res) return $uploadfile;//如果成功返回当前文件路径
return false;
}
/**
* Excel导入数据库
*/
private function insertExceltoDatabase($uploadfilename){
$coupon_member_model = Model('coupon_member');
$data=new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('utf-8');
$data->read($uploadfilename);   // 注意上传的Excel要是能够正常读取编辑的才可以
$rownum=$data->sheets[0]['numRows'];
$str="";
$success=0;
$insert_coupon_data = array();
for ($i=2; $i <=$rownum ; $i++) {
$coupon_code=trim($data->sheets[0]['cells'][$i][1]);
$coupon_pwd=trim($data->sheets[0]['cells'][$i][2]);
//验证填写信息是否正确
if (!isset($coupon_code) || empty($coupon_code)) {
$str.="抵用券编码为空,第".$i."行\\n";
continue;
}
if (!isset($coupon_pwd) || empty($coupon_pwd)) {
$str.="抵用券密码为空,第".$i."行\\n";
continue;
}
$coupon_data['coupon_code'] = $coupon_code;
$coupon_data['coupon_pwd'] = $coupon_pwd;
$insert_coupon_data[] = $coupon_data;
$success++;
}
// 批量插入数据表
if ($success>0) {
$res_insert = $coupon_member_model->addCouponMemberAll($insert_coupon_data);
return "<script>alert('成功导入".$success."条记录,失败记录:\\n".$str."');history.back(-1);;</script>";
}else{
return false;
}
}
}

新手小白一个,望各位大神指点!


												

php Excel文件导入 Spreadsheet_Excel_Reader的更多相关文章

  1. (转)如何将 Excel 文件导入到 Navicat for MySQL 数据库

    场景:工作中需要统计一段时间的加班时长,人工统计太过麻烦,就想到使用程序实现来统计 1 如何将 Excel 文件导入到 Navicat for MySQL 数据库 Navicat for MySQL  ...

  2. NodeJs之EXCEL文件导入导出MongoDB数据库数据

    NodeJs之EXCEL文件导入导出MongoDB数据库数据 一,介绍与需求 1.1,介绍 (1),node-xlsx : 基于Node.js解析excel文件数据及生成excel文件. (2),ex ...

  3. MVC3学习:将excel文件导入到sql server数据库

    思路: 1.将excel文件导入到服务器中. 2.读取excel文件,转换成dataset. 3.循环将dataset数据插入到数据库中. 本例子使用的表格为一个友情链接表F_Link(LinkId, ...

  4. excel文件导入mysql

    在数据处理的过程中,常常要把windows下的excel文件导入linux下的mysql.这其中会出现一些问题. 1.首先,要在mysql中建表.命令最好存在记事本中,可以随时修改,随时执行 crea ...

  5. Excel导入导出工具(简单、好用且轻量级的海量Excel文件导入导出解决方案.)

    Excel导入导出工具(简单.好用且轻量级的海量Excel文件导入导出解决方案.) 置顶 2019-09-07 16:47:10 $9420 阅读数 261更多 分类专栏: java   版权声明:本 ...

  6. 十万级百万级数据量的Excel文件导入并写入数据库

    一.需求分析 最近接到一个需求,导入十万级,甚至可能百万数据量的记录了车辆黑名单的Excel文件,借此机会分析下编码过程; 首先将这个需求拆解,发现有三个比较复杂的问题: 问题一:Excel文件导入后 ...

  7. Excel文件导入导出(基于Nodejs、exceljs)

    Excel导入.导出是大多数项目的管理后台必备功能.几年来使用过多个该功能的实现包,最近一次开发该功能,突然发现一个人气极高(3000+)的包,这里记录一下使用方法. 大凡厉害的技术的文档咋一看都想字 ...

  8. 利用 js-xlsx 实现 Excel 文件导入并解析Excel数据成json格式的数据并且获取其中某列数据

    演示效果参考如下:XML转JSON 另一个搭配SQL实现:http://sheetjs.com/sexql/index.html 详细介绍: 1.首先需要导入js <script src=&qu ...

  9. tp3.2.3运用phpexcel将excel文件导入mysql数据库

    1,下载PHPExcel 2,配置将下载好的PHPExcel文件与PHPExcel.php 放到thinkphp 根目录 include/Library/Org/Util/下面 3,同时将PHPExc ...

随机推荐

  1. webapp之路--之必备知识

    移动设备的用户越来越多,每天android手机的激活量都已经超过130万台,所以我们面向移动终端的WebAPP也开始跟进了.本文主要介绍webapp的开发与调试的相关知识和经验,以及给出几种可选的解决 ...

  2. PHP 将MySQL数据导出csv

    1.查询数据 // 假设得到的数据格式如下 $result = array( array( "orderid" = "1110111", "shopi ...

  3. json python api

    摘要:对于python来说,json并不是一种数据类型,可以把它视为函数.json.dumps把字典或列表变成json风格的str类型:json.loads把json风格的str类型变成原来的类型(列 ...

  4. 猪八戒吃西瓜(wmelon)

    猪八戒吃西瓜(wmelon) 题目描述 有一天,贪吃的猪八戒来到了一个大果园,果园里有n(n≤100000)个大西瓜,每个西瓜 的质量不大于长整型(longint),并且每个西瓜的质量都不同.猪八戒非 ...

  5. Deep learning:三十八(Stacked CNN简单介绍)

    http://www.cnblogs.com/tornadomeet/archive/2013/05/05/3061457.html 前言: 本节主要是来简单介绍下stacked CNN(深度卷积网络 ...

  6. 移动web开发资源大整合

    移动web开发资源大整合 http://www.cnblogs.com/PeunZhang/p/3407453.html

  7. struts2.0 s标签_小小鸟_百度空间

    struts2.0 s标签 1. Struts2页面开发中常用标签使用说明 1.1.往action里传值的使用方式: <input name="userName" type= ...

  8. python字符串,列表,字典的常用方法

    本篇内容 字符串的常用方法 列表的常用方法 字典的常用方法 字符串的常用方法 center 字符居中显示,指定字符串长度,填充指定的填充字符 string = "40kuai" p ...

  9. python函数的参数传递问题---传值还是传引用?

    摘要:在python中,strings, tuples, 和numbers是不可更改的对象,而list,dict等则是可以修改的对象.不可更改对象的传递属于传值,可更改对象属于传引用.想要在函数中传递 ...

  10. ARM-LINUX学习笔记-(虚拟机linux串口终端以及USB程序下载,基于TQ2440)

    昨天安装了ssh服务之后今天在windows上用xshell登陆发现登录不上,原因是使用了virtualbox的NAT模式,在NAT模式下,客户机可以很方便地上网,但是想要链接宿主机就需要打开网络地址 ...