Excel导入数据库(php版)
程序员文章站
2023-11-08 17:16:10
一、环境说明 二、前端预览 三、Excel表格 四、HTML部分 五、JavaScript部分 六、PHP部分 上传结果: 注意: 请根据自身需求参考上面代码,而不要直接使用上面演示代码,这里仅提供一个简单的思路。 来源:https://xushanxiang.com/2019/11/excel-u ......
一、环境说明
apache+php(phpexcel)+html5+javascript(jquery)+mysql
二、前端预览
三、excel表格
四、html部分
<p>按照excel表格模板(<a href="javascript:void(0);">下载</a>),填写资料。</p>
<p>上传已编辑的文件:</p>
<p>
<a href="javascript:void(0);" id="triggerinputfile">选择文件</a>
<input
type="file"
id="inputfile"
style="height:0;width:0"
accept="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
>
<span id="filepath"></span>
<a class="hide" href="javascript:void(0);" id="uploadfile">上传</a>
</p>
五、javascript部分
$(function() { var tipfn = function(str) { $('#tip').text(str); $('#tip').fadein(function() { settimeout(function() { $('#tip').fadeout(); }, 2000); }); }; $('#triggerinputfile').click(function() { $('#inputfile').click(); }); $('#inputfile').change(function() { var filereader = new filereader(); var file = $(this).prop('files')[0]; if (file) { filereader.readasdataurl(file); } else { tipfn('请选择文件'); return; } filereader.onloadend = (e) = >{ console.log(e); if (file.size > 2000000) { tipfn('文件大小不得超过 2 m'); return; } // $('#filepath').text(e.target.result); var fullpath = $(this).val(); var filename = fullpath.split('\\'); $('#filepath').text(filename[filename.length - 1]); // c:\fakepath\第三部分价格表.docx $('#uploadfile').removeclass('hide'); }; }); $('#uploadfile').click(function() { var form_data = new formdata(); var file_data = $('#inputfile').prop('files')[0]; form_data.append('id', 'xls_file'); form_data.append('name', file_data.name); form_data.append('type', file_data.type); form_data.append('lastmodifieddate', file_data.lastmodifieddate); form_data.append('size', file_data.size); form_data.append('upfile', file_data); $.ajax({ type: 'post', url: '/excel/upload', datatype: 'json', processdata: false, contenttype: false, cache: false, data: form_data }).success(function(json) { if (json.error === 0) { tipfn('文件上传成功!'); $('#uploadfile').addclass('hide'); } else { tipfn('文件上传失败,原因:' + json.message); } }); }); });
六、php部分
public function upload() { //定义允许上传的文件扩展名 $ext_arr = array( 'excel' => array('xls', 'xlsx') ); //最大文件大小 $min_size = 1; $max_size = 2000000; if (empty($_files) === false) { //原文件名 $file_name = $_files['upfile']['name']; //服务器上临时文件名 $tmp_name = $_files['upfile']['tmp_name']; //die($tmp_name); //文件大小 $file_size = $_files['upfile']['size']; //检查文件名 if (!$file_name) { $this->alert('请选择文件。'); } //判断文件是否是通过 http post 上传的 if (is_uploaded_file($tmp_name) === false) { $this->alert('上传失败。'); } //检查文件大小 if ($file_size > $max_size) { $this->alert('上传文件大小超过限制。'); } if ($file_size < $min_size) { $this->alert('上传文件大小过小。'); } //获得文件扩展名 $temp_arr = explode('.', $file_name); $file_ext = array_pop($temp_arr); $file_ext = trim($file_ext); $file_ext = strtolower($file_ext); //检查扩展名 if (in_array($file_ext, $ext_arr['excel']) === false) { $this->alert('上传文件扩展名是不允许的扩展名。\\n只允许'. implode(',', $ext_arr['excel']) . '格式。'); } $save_path = $_server['document_root'].'/upload/'; if (!file_exists($save_path)) { mkdir($save_path, 0777, true); } $new_file_name = md5(uniqid(rand())); $new_file_name .= '.'.$file_ext; //移动文件 $file_path = $save_path.$new_file_name; if (move_uploaded_file($tmp_name, $file_path) === false) { $this->alert('上传文件失败。'); } else { header('content-type: text/plain; charset=utf-8'); $result = $this->show_excel($file_path); echo '{"error":0, "url":"/upload/'.$new_file_name.'","msg":'.$result.'}'; //删除本地文件 // $this->del_file($file_path); } } } private function show_excel($file_path) { //include class require_once($_server['document_root'].'/classes/phpexcel.php'); require_once($_server['document_root'].'/classes/phpexcel/writer/excel2007.php'); //文件的扩展名 $ext = strtolower(pathinfo($file_path, pathinfo_extension)); // 读excel if ($ext === 'xlsx') { // $objreader = phpexcel_iofactory::createreader('excel2007'); require_once($_server['document_root'].'/classes/phpexcel/reader/excel2007.php'); $objreader = new phpexcel_reader_excel2007; $objphpexcel = $objreader->load($file_path, 'utf-8'); } elseif ($ext === 'xls') { // $objreader = phpexcel_iofactory::createreader('excel5'); require_once($_server['document_root'].'/classes/phpexcel/reader/excel5.php'); $objreader = new phpexcel_reader_excel5; $objphpexcel = $objreader->load($file_path, 'utf-8'); } $sheet = $objphpexcel->getsheet(0); $highestrow = $sheet->gethighestrow(); // 取得总行数 $highestcolumn = $sheet->gethighestcolumn(); // 取得总列数 $ar = array(); $nar = array(); $i = 0; $importrows = 0; for ($j = 2; $j <= $highestrow; $j++) { $importrows++; $realname = (string)$objphpexcel->getactivesheet()->getcell("a$j")->getvalue(); //需要导入的realname $phone = (string)$objphpexcel->getactivesheet()->getcell("b$j")->getvalue(); //需要导入的phone $company = (string)$objphpexcel->getactivesheet()->getcell("c$j")->getvalue(); //需要导入的company $job = (string)$objphpexcel->getactivesheet()->getcell("d$j")->getvalue(); //需要导入的job $qq = (string)$objphpexcel->getactivesheet()->getcell("e$j")->getvalue(); //需要导入的email $ret['mdata'] = 0; array_push($nar, $realname); // $ret['mdata'] = $this->addmemb($phone, $realname, $company, $job, $qq); //这里就是我的数据库添加操作定义的一个方法,对应替换为自己的 if ($ret['mdata'] && !is_bool($ret['mdata'])) { $ar[$i] = $ret['mdata']; $i++; } } if ($i > 0) { $ret['res'] = "0"; $ret['errnum'] = $i; $ret['allnum'] = $importrows; $ret['sucnum'] = $importrows - $i; $ret['mdata'] = $ar; $ret['msg'] = "导入完毕!"; return json_encode($ret); } $ret['res'] = "1"; $ret['allnum'] = $importrows; $ret['errnum'] = 0; $ret['sucnum'] = $importrows; $ret['mdata'] = "导入成功!"; $ret['nar'] = $nar; return json_encode($ret); } private function alert($msg='null') { header('content-type: text/plain; charset=utf-8'); echo '{"error":1, "message":"'.$msg.'"}'; exit; }
上传结果:
{ "error": 0, "url": "/upload/caeaba6fdf8106a3425aead0401d5c5c.xlsx", "msg": { "mdata": "导入成功!", "res": "1", "allnum": 10, "errnum": 0, "sucnum": 10, "nar": [ "但秀逸", "禹雪儿", "果智", "沙怡", "岑阳秋", "粘萌", "兴飞兰", "白翰飞", "危莞尔", "辉迎丝" ] } }
注意:
请根据自身需求参考上面代码,而不要直接使用上面演示代码,这里仅提供一个简单的思路。
来源:
上一篇: 赖茅酒53度价格详细介绍!
下一篇: ipv4的ip字符串转化为int型