• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    PHP使用PHPExcel读取excel数据并批量上传到数据库

    发布者: Error | 发布时间: 2025-6-14 13:16| 查看数: 36| 评论数: 0|帖子模式

    应用场景


    当遇到需要批量导入数据的时候,前端会上传一个excel表格,由后端读取数据并存入数据库。前端代码就不介绍了,这是一个前后端分离的项目,主要是讲解后端读取excel表格的数据。前端上传文件就可以了。

    PHPExcel 是什么

    是用来操作office excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的电子表格,如Excel(BIFF).xls,Excel 2007 (OfficeOpenXML),.xlsx,CSV,Libre/OpenOffice Calc .ods, Gnumeric, PDF, HTML等等。
    要求
    PHP 5.2.0 版本及以上
    PHP extension php_zip 开启 (如果你需要使用 PHPExcel 来操作 .xlsx .ods or .gnumeric 文件)
    PHP extension php_xml 开启
    PHP extension php_gd2 开启(选填, 如果需要计算准确的列宽需要开启此扩展)

    PHP 读取文件写入数据库
    1. <?php
    2. header("Content-type:text/html; charset=utf-8");

    3. // 制定允许其他域名访问
    4. header("Access-Control-Allow-Origin:*");
    5. // 响应类型
    6. header('Access-Control-Allow-Methods:POST');
    7. // 响应头设置
    8. header('Access-Control-Allow-Headers:x-requested-with, content-type');
    9. // 数据库配置文件
    10. include './config/config.php';
    11. // 下载 PHPExcel 放入项目内,引入即可
    12. include "./PHPExcel-1.8/Classes/PHPExcel/IOFactory.php";


    13. // 获取前端传入的文件
    14. $file = $_FILES['file'];
    15. //临时文件存放路径
    16. $fileTmp = $file['tmp_name'];
    17. $fileSize = $file['size'];
    18. $fileName = $file['name'];
    19. //错误,输出0,表示文件提交成功
    20. $fileError = $file['error'];


    21. if($fileError==0) {
    22.         $inputFileName = $fileTmp;
    23.         date_default_timezone_set('PRC');
    24.         // 读取excel文件
    25.         try {
    26.             $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
    27.             $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    28.             $objPHPExcel = $objReader->load($inputFileName);
    29.         } catch(Exception $e) {

    30.         }

    31.         // 确定要读取的sheet,什么是sheet,看excel的右下角
    32.         $sheet = $objPHPExcel->getSheet(0);
    33.         $highestRow = $sheet->getHighestRow();
    34.         $highestColumn = $sheet->getHighestColumn();

    35.         $time = date('Y-m-d h:i:s', time());
    36.         // 把数据处理后存入数组
    37.         $array = array();
    38.         $time = date('Y-m-d h:i:s', time());
    39.         for ($row = 2; $row <= $highestRow; $row++) {
    40.                 $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
    41.                 // 重复数据不插入数据库
    42.                 $falg = $rowData[0][0];
    43.                 $sqlIf = "SELECT codes FROM tablef where codes = '$falg'";
    44.                 $querySQL = mysqli_query($conn,$sqlIf);
    45.                 $arrSQL = mysqli_fetch_array($querySQL);
    46.                 if($arrSQL == null) {
    47.                         // 获取到 Excel 每行的数据插入数据库,需根据你自己的表格进行调整
    48.                         $sql="insert into tablef(codes,year,month,idcode,type,timese) values('".$rowData[0][0]."','" .($rowData[0][1])."','".$rowData[0][2]."','".$rowData[0][3]."','".$rowData[0][4]."','".$time."')";

    49.                         $query=mysqli_query($conn,$sql);//函数执行一条 MySQL 查询。
    50.                 }
    51.         }

    52.         // 成功后返回给前端
    53.         echo json_encode(["msg" => 'ok']);
    54. }else {
    55.         echo json_encode(["msg" => 'no']);
    56. }


    57. // 断开数据库连接
    58. $conn->close();   


    59. ?>
    复制代码
    结语

    这是原生PHP使用的一个方式,我PHP的话只会一个 ThinkPHP 框架,这边我测试的话 ThinkPHP 使用起来跟这个也是差不多的,至于有些其他的php框架的话我没有用过,但是基本都差不多。现在前后端分离占主导地位,对于一些做后台的兄弟们来说,这些批量导入数据的是很常见的,这边就分享一个简单的,对于一些sql语句的话是需要修改的,这里面的sql语句是不安全的,这里提醒一下大家,测试的时候使用这些SQL语句为啥问题,生产环境切记不能这样用。
    到此这篇关于PHP使用PHPExcel读取excel数据并批量上传到数据库的文章就介绍到这了,更多相关PHP PHPExcel读取excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:https://www.jb51.net/program/33302357e.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表