php 把excel批量导入到数据库代码

我们是利用了ExcelFileParser这个扩展来处理的哦,

Excel数据获取演示

Excel数据获取演示

/**

* CopyRight (c) 2009,

* All rights reserved.

* 文件名:

* 摘  要:

*

* @author 星期八 [email=ixqbar@hotmail.com]ixqbar@hotmail.com[/email]

* @version

*/

class IndexAction extends Action

{

/**

* 构造函数

*/

public function __construct()

{

parent::__construct();

}

/**

* 默认索引页

*/

public function index()

{

$this->display();

}

/**

* 提交处理

*/

public function parse()

{

/**

* $_FILES数组说明

* array(n) {

*   ["表单文件框名称"] => array(5) {

*       ["name"]        => 提交文件名称

*       ["type"]        => 提交文件类型 Excel为"application/vnd.ms-excel"

*       ["tmp_name"]    => 临时文件名称

*       ["error"]       => 错误(0成功1文件太大超过upload_max_filesize2文件太大超过MAX_FILE3上传不完整4没有上传文件)

*       ["size"]        => 文件大小(单位:KB)

*   }

* }

*/

$return=array(0,'');

/**

* 判断是否提交

* is_uploaded_file(文件名称)用于确定指定的文件是否使用POST方法上传,防止非法提交,通常和move_upload_file一起使用保存上传文件到指定的路径

*/

if(!isset($_FILES) || !is_uploaded_file($_FILES['excel']['tmp_name']))

{

$return=array(1,'提交不合法');

}

//处理

if(0 == $return[0])

{

import('@.Util.ExcelParser');

$excel=new ExcelParser($_FILES['excel']['tmp_name']);

$return=$excel->main();

}

//输出处理

print_r($return);

}

}

?>

/**

* CopyRight (c) 2009,

* All rights reserved.

* 文件名:excel数据获取

* 摘  要:

*

* @author 星期八 [email=ixqbar@hotmail.com]ixqbar@hotmail.com[/email]

* @version 0.1

*/

class ExcelParser

{

private $_data=array(0,'');

private $_excel_handle;

private $_excel=array();

/**

* 构造函数

* @param $filename 上传文件临时文件名称

*/

public function __construct($filename)

{

/**

* 引入excelparser类

* 普通方法为

* requires 路径.'excelparser.php';

* import为ThinkPHP自带导入类方法

*/

import('@.Util.PHPExcelParser.excelparser','','.php');

$this->_excel_handle=new ExcelFileParser();

//错误获取

$this->checkErrors($filename);

}

/**

* 错误校验

*/

private function checkErrors($filename)

{

/**

* 方法一

*/

$error_code=$this->_excel_handle->ParseFromFile($filename);

/**

* 方法二

* $file_handle = fopen($this->_filename,'rb');

* $content = fread($file_handle,filesize($this->_filename));

* fclose($file_handle);

* $error_code = $this->_excel->ParseFromString($content);

* unset($content,$file_handle);

*/

switch($error_code)

{

case 0:

//无错误不处理

break;

case 1:

$this->_data=array(1,'文件读取错误(Linux注意读写权限)');

break;

case 2:

$this->_data=array(1,'文件太小');

break;

case 3:

$this->_data=array(1,'读取Excel表头失败');

break;

case 4:

$this->_data=array(1,'文件读取错误');

break;

case 5:

$this->_data=array(1,'文件可能为空');

break;

case 6:

$this->_data=array(1,'文件不完整');

break;

case 7:

$this->_data=array(1,'读取数据错误');

break;

case 8:

$this->_data=array(1,'版本错误');

break;

}

unset($error_code);

}

/**

* Excel信息获取

*/

private function getExcelInfo()

{

if(1==$this->_data[0])return;

/**

* 获得sheet数量

* 获得sheet单元对应的行和列

*/

$this->_excel['sheet_number']=count($this->_excel_handle->worksheet['name']);

for($i=0;$i_excel['sheet_number'];$i )

{

/**

* 行于列

* 注意:从0开始计数

*/

$row=$this->_excel_handle->worksheet['data'][$i]['max_row'];

$col=$this->_excel_handle->worksheet['data'][$i]['max_col'];

$this->_excel['row_number'][$i]=($row==NULL)?0: $row;

$this->_excel['col_number'][$i]=($col==NULL)?0: $col;

unset($row,$col);

}

}

/**

* 中文处理函数

* @return

*/

private function uc2html($str)

{

$ret = '';

for( $i=0; $i

{

$charcode = ord($str[$i*2]) 256*ord($str[$i*2 1]);

$ret .= ''.$charcode.';';

}

return mb_convert_encoding($ret,'UTF-8','HTML-ENTITIES');

}

/**

* Excel数据获取

*/

private function getExcelData()

{

if(1==$this->_data[0])return;

//修改标记

$this->_data[0]=1;

//获取数据

for($i=0;$i_excel['sheet_number'];$i )

{

/**

* 对行循环

*/

for($j=0;$j_excel['row_number'][$i];$j )

{

/**

* 对列循环

*/

for($k=0;$k_excel['col_number'][$i];$k )

{

/**

* array(4) {

*   ["type"]   => 类型 [0字符类型1整数2浮点数3日期]

*   ["font"]   => 字体

*   ["data"]   => 数据

*   ...

* }

*/

$data=$this->_excel_handle->worksheet['data'][$i]['cell'][$j][$k];

switch($data['type'])

{

case 0:

//字符类型

if($this->_excel_handle->sst['unicode'][$data['data']])

{

//中文处理

$data['data'] = $this->uc2html($this->_excel_handle->sst['data'][$data['data']]);

}

else

{

$data['data'] = $this->_excel_handle->sst['data'][$data['data']];

}

break;

case 1:

//整数

//TODO

break;

case 2:

//浮点数

//TODO

break;

case 3:

//日期

//TODO

break;

}

$this->_data[1][$i][$j][$k]=$data['data'];

unset($data);

}

}

}

}

/**

* 主函数

* @return array(标识符,内容s)

*/

public function main()

{

//Excel信息获取

$this->getExcelInfo();

//Excel数据获取

$this->getExcelData();

return $this->_data;

}

}

?>

php批量添加excel数据库表,php 把excel批量导入到数据库代码相关推荐

  1. SQL Server数据库表的基本操作(批量插入、删除、查询数据,删除表中重复数据方法)

    实验名称:数据库表的基本操作与表内数据操作 实验目的: 掌握数据库表创建方法(交互式.T-SQL法) 掌握修改数据库表结构的方法 掌握删除数据库表的方法 掌握交互式EXCEL文件录入数据至数据库表的方 ...

  2. 根据数据库表结构生成Excel表设计——源码设计说明

    根据数据库表结构生成Excel表设计 在系统运维的过程中,很多时候大家都不喜欢改文档,修改了数据库字段后很少同步再更新表设计文档的,这就导致系统运行一段时间后,系统表设计与实际生产跑业务的设计出入很大 ...

  3. 根据数据库表结构生成Excel表设计——工具介绍

    根据数据库表结构生成Excel表设计 最近又接手了一些老系统,库表设计啥的都没有,十来个系统,每个系统都几十张表,一个个的补感觉太难了,合计了一下感觉还是搞个工具比较好. 在系统运维的过程中,很多时候 ...

  4. phpexecl保存mysql_【PHP】将数据库表保存为Excel(PHPExcel)

    今天有一个朋友问了我一个PHP下载数据库表单并保存为Excel的功能问题.下面我就将代码贴出来,大家可以看下.<?php public function exptable($name){ ven ...

  5. powerdesigner导出mysql数据库表结构到Excel

    前提 要做数据源的整理,需要将Mysql数据库表的结构导出到Excel表里面做文档记录; 第一个Sheet是所有表格的列表,其他的Sheet是每一个表格的详细字段以及注释说明. 打开PowerDesi ...

  6. SAP 导出 HTML,【我sap这导出数据表格export.mhtml怎么转换为 excel 工作表.xlsx】excel生成html表格数据...

    如何把Html网页格式转成Excel表格 1.单击数据--导部数据--新建Web查询. 2.勾选我可以此内容,允许播放,单击继续按钮. 3.在地址栏输入网站地址,转到此网站里面. 4.跳转到指定网页, ...

  7. 一种多层级机构数据库表设计的思路及组织机构树数据库表设计

    在实际开发过程中,经常存在多个层级结构的设计,而且多个层级结构还需要排序.这里通过将多级结构的数据在同一张表中(无需多张表进行关联),并通过level的巧妙设计来实现单表查询. level的设计原则: ...

  8. excel 透视表 vba_使用Excel VBA删除数据透视表计算字段

    excel 透视表 vba Yesterday, I started out with the best of intentions, planning to get some work done, ...

  9. mysql 拷贝数据库 表存在却打不开_mysql数据库文件复制后表打不开

    mysql数据库文件复制后表打不开找了很多方法最终解决了.InnoDB只有frm表结构,拷贝过去mysql后说表不存在网上说还要拷贝ibdata1文件,但这样的话会覆盖掉mysql本来有的ibdata ...

最新文章

  1. bzoj2724: [Violet 6]蒲公英(分块)
  2. Android Studio 提示Error running app: No Android facet found for app
  3. stm32数据手册boot_STM32的ISP下载的原理是什么呢?
  4. SpringBoot_配置-@ConfigurationProperties与@Value区别
  5. SQL Server安装文件挂起错误解决办法
  6. js或css文件后面的参数是什么意思?
  7. 考研数学三考摆线吗_考研数学草稿纸发几张?可以多打几张准考证当草稿纸用吗?...
  8. 【转】ASP.NET 表单验证实现浅析
  9. 全国大学生计算机技能应用大赛Java模拟题
  10. Google 的三篇论文
  11. 推动区块链基础设施建设,先要破解区块链发展“三高”难题
  12. java丶JsonObject 的使用
  13. 朱威廉称暴雨娱乐将从暴雪公司挖人才
  14. BI和大数据的区别在哪里?
  15. 解决惠普战66五代发烫及风扇响问题——ICS.exe死循环
  16. docker-comose搭建openldap + jenkins
  17. 关于office2016与visio2016冲突问题的解决方案
  18. ggggxc学习笔记----Vue学习笔记VI----可复用技术
  19. Qt之QEvent(所有事件的翻译)
  20. 2022年中级经济师《工商管理》考试大纲

热门文章

  1. 《如何搭建小微企业风控模型》第九节 单变量分析(上)节选
  2. js定时器倒计时特效
  3. 为何高于四次的方程没有根式解?
  4. Struts2 之 对xwork的理解
  5. 11 款最好 CSS 框架 让你的网站独领风骚
  6. 不能算是读后感的读后感
  7. [转]IE6对!important支持不彻底
  8. SpringSocial业务系统与社交网站的绑定与解绑
  9. 关于JS中apply和call详细解答
  10. TCP与UDP传输协议