编程学习网 > PHP技术 > php教程案例:手把手教你原生excel导入
2021
05-11

php教程案例:手把手教你原生excel导入

分享一波关于php教程之原生导入,以下是我实际操作流程,如有其他更好的想法欢迎互动

1.首先下载安装PHPExcel扩展

扩展下载地址:https://www.php.cn/xiazai/leiku/1491

我们只需要  将Classes文件改名


2.html文件

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>

    <form action="index.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>
3.代码


<?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);exit;

    foreach ($data as $k => $v) {
        if ($k > 1) {
            $sql = "insert into user (username,password) values ('" . $v['B'] . "', '" . $v['C'] . "')";

            mysql_query($sql);
        }
    }

    $sql = "SELECT * FROM user";
    $result = mysql_query($sql);
    $tip = '用户导入成功' . ',现在' . mysql_num_rows($result) . '条数据了!';
    echo "<script>alert('" . $tip . "');history.go(-1);</script>";
    exit;
}



?>

4.如果报错

PHPExcel的exception ‘Exception‘ with message ‘The filename is not recognised as an OLE file

错误信息

exception 'Exception' with message 'The filename ../../Uploads/taobaoExcel/day_110815/201108151844517294.xls is not recognised as an OLE file' in E:\phpworks\apache\htdocs...

问题原因:

虽然该文件可能有一个xls扩展名,这是一个“假”的Excel文件。如果您在文本编辑器打开该文件你会发现它实际上是一个HTML文件。
我的原因是模版有错,我直接把Excel2007的后缀,xlsx改成xls,导致“伪”xls文件

解决办法:
使用Excel2007创建后,另存为2003的

也就是将上传的文件 xlsx后缀  弄成xls即可

以上就是这次分享的所有内容,如果需要了解更多关于php实践内容欢迎关注编程学习网


扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取