在网站建设过程中,时不时就会遇到需要增加大量数据的情况,比如说产品数据,会员数据之类的,从其他站点搬迁到新的网站上,如果手动一条一条的去增加,那无疑是会浪费大量的时间和精力;而且数据表结构设计在不相同的情况下,也不能完全的直接导入原来的数据表,所以这种情况下,可以把原来的数据表导出为Excel文档,然后再通过导入Excel文档到数据库,这样一来就节省了人力物力以及大量的时间,而且也保证了数据不会丢失。
大概的页面是这样的,这里是设置一个Excel文档模板给后台管理人员参考,以免Excel文档结果不对,导致导入数据出错;
Excel文档的结构是这样的,下面做功能程序的时候需要用到;
这里的ABCDE就是对应Excel文档的列名称,左边对应的就是数据表名称,这里根据个人情况设置即可;
下面直接贴出代码:
table_excel方法:
public function table_excel(){
if (IS_POST){
ini_set('memory_limit', '256M');//程序运行内存
$file_url=I('post.file_url','');
if($file_url==''){;
$this->error('请先上传文件');
}
$file_url=str_replace('/Uploads','Uploads',$file_url);//去掉第一个斜线,因为取词excel只能用相对路径。
$array=excelImport($file_url,1,'E');
//从第一行开始,E列结束,需要修改excelImport($filename, $begin) 为 excelImport($filename, $begin,$allColumn); 去掉 $allColumn = $currentSheet->getHighestColumn();输出$array就知道怎么导入了
// var_dump($array);exit();
$ModelObj = D('Member');
if(!count($array)){
$this->error('上传的文件不正确');
}
$lists=array();
$this->status=1;
$num=0;
foreach($array as $key => $var){
$data['title'] = $var['A'];
$data['number'] = $var['B'];
$data['courses'] = $var['C'];
$data['place'] =$var['D'];
$data['time'] = $var['E'];
$data['order_id'] = 100;
$data['is_show'] = 1;
$flag = $ModelObj->data($data)->add();
if($flag>0){
$num++;
}
}
unset($data);
unset($var['A']);
unset($var['B']);
unset($var['C']);
unset($var['D']);
unset($var['E']);
$this->success('成功导入'.$num.'条信息');
}
$this->display();
}
excelImport方法:
/**
* 读取Excel文件
*/
function excelImport($filename, $begin,$allColumn) {
Vendor('PHPExcel.PHPExcel');
//建立reader对象
$PHPReader = new PHPExcel_Reader_Excel2007();
if (!$PHPReader->canRead($filename)) {
$PHPReader = new PHPExcel_Reader_Excel5();
if (!$PHPReader->canRead($filename)) {
return array();
}
}
//建立excel对象,此时你即可以通过excel对象读取文件,也可以通过它写入文件
$PHPExcel = $PHPReader->load($filename);
/* * 读取excel文件中的第一个工作表 */
$currentSheet = $PHPExcel->getSheet(0);
/* * 取得最大的列号 */
// $allColumn = $currentSheet->getHighestColumn();
/* * 取得一共有多少行 */
$allRow = $currentSheet->getHighestRow();
$returnCell = '';
//循环读取每个单元格的内容。注意行从1开始,列从A开始
for ($rowIndex = $begin; $rowIndex <= $allRow; $rowIndex++) {
for ($colIndex = 'A'; $colIndex <= $allColumn; $colIndex++) {
$addr = $colIndex . $rowIndex;
$cell = $currentSheet->getCell($addr)->getValue();
if ($cell instanceof PHPExcel_RichText) {
//富文本转换字符串
$returnCell[$rowIndex][$colIndex] = $cell->__toString();
} else {
$returnCell[$rowIndex][$colIndex] = $cell;
}
}
}
return $returnCell;
}
PHP是一门专门开发网站的语言,非常好用,而且还是开源免费的,配合开源数据库MYSQL,基本天衣无缝。