400-915-1135
详细

php开发mysql数据库导入excel导出excel原生完整代码开箱即用(附示例代码)

发表日期:2022-06-10 04:20:49   作者来源:超级管理员   浏览:0

有时候要用到 mysql数据库导出数据为 excel或是导入excel到数据库,为了方便以后自己用,所以做成了单文件的原生版本,可以方便的嵌入任何系统cms,这里用到了PHPExcel这个,可以在网上自己下,也可以直接用附件包里下载好的,建议直接使用测试没问题,再考虑更新 到官方最新版本

网上很多版本所用mysql语句是 mysql的,我这个使用更安全的mysqli驱动,更安全,更高效

html部分代码为

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
 
    <form action="in.php" method="post" enctype="multipart/form-data">
      <div class="control-group">
        <label>Excel表格:</label>
        <input type="file"  name="file"/>
      </div>
      <div class="control-group">
        <input type="submit"  value="导入" />
      </div>
    </form>
  </body>
</html>

php部分为

<?php
$tmp = $_FILES['file']['tmp_name'];
if (empty($tmp)) {
    echo '请选择要导入的Excel文件!';
    exit;
}
$save_path = "uploads/";
$filename = $save_path . date('Ymdhis') . ".xlsx"; //上传后的文件保存路径和名称
if (copy($tmp, $filename)) {
 
    require_once 'PHPExcel/PHPExcel.php';
    require_once 'PHPExcel/PHPExcel/Reader/Excel5.php';
 
 
    $PHPReader = new PHPExcel_Reader_Excel5(); //PHPExcel_Reader_Excel2007 PHPExcel_Reader_Excel5
    //载入文件
    $PHPExcel = $PHPReader->load($filename);
 
    //获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
    $currentSheet = $PHPExcel->getSheet(0);
    //获取总列数
    $allColumn = $currentSheet->getHighestColumn();
    //获取总行数
    $allRow = $currentSheet->getHighestRow();
    //循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始
    for ($currentRow = 1; $currentRow <= $allRow; $currentRow++) {
        //从哪列开始,A表示第一列
        for ($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++) {
            //数据坐标
            $address = $currentColumn . $currentRow;
            //读取到的数据,保存到数组$arr中
            $data[$currentRow][$currentColumn] = $currentSheet->getCell($address)->getValue();
        }
    }
 
    $add_time = date('Y-m-d H:i:s', time());
    //var_dump($data);
 $num=0;
    foreach ($data as $k => $v) {
        if ($k > 1) {//这部分是执照mysql部分 可以根据自己的需要自由编写
			
			$con = mysqli_connect("localhost","root","root","数据库名") or die('mysql连接失败!');/*连接mysql,并选择数据库*/
			mysqli_query($con,'set names utf8') or die('设置网页编码失败!'); /*设置网页编码*/
			
			
			$sql = "INSERT INTO chenji (id,pichi,name,cardid,gongzhong,jibie,jichu,jineng,jieguo) VALUES ('','". $v['A']."','". $v['B']."','".$v['C']."','".$v['D']."','".$v['E']."','".$v['F']."','".$v['G']."','".$v['H']."')";
			$query = mysqli_query($con,$sql);
			
			if($query){echo "成功";
			$num++;
			echo "导入第".$num."条&nbsp;&nbsp;&nbsp;标识内容:". $v['B']. $v['C']. $v['A']. $v['D']. $v['E']. $v['F']. $v['G']. $v['H']."<br/> ";
			mysql_query($sql);
			}
			}
			}
}
 
 
 
?>

上面的 ABCDE...对应表格上的列,会逐行扫数据

如果是自己弄 记得要在目录下新建一个"uploads"文件夹

以上代码测试在php5.6版本正常,理论在上其它版本上也正常


如果报错:PHPExcel的exception ‘Exception‘ with message ‘The filename is not recognised as an OLE file


这样就轻松实现了在php中导入导出数据断表格或是反着来啦

完整代码附件下载 点击这里

本文章多为网络内容整理而来,如有侵犯您的权益,请联系我们免费删除