当前位置: 首页 > news >正文

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

要求

PHP 5.2.0 版本及以上

PHP extension php_zip 开启 (如果你需要使用 PHPExcel 来操作 .xlsx .ods or .gnumeric 文件)

PHP extension php_xml 开启

PHP extension php_gd2 开启(选填, 如果需要计算准确的列宽需要开启此扩展)

PHP 读取文件写入数据库

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

<?php

header("Content-type:text/html; charset=utf-8");

// 制定允许其他域名访问

header("Access-Control-Allow-Origin:*");

// 响应类型

header('Access-Control-Allow-Methods:POST');

// 响应头设置

header('Access-Control-Allow-Headers:x-requested-with, content-type');

// 数据库配置文件

include'./config/config.php';

// 下载 PHPExcel 放入项目内,引入即可

include"./PHPExcel-1.8/Classes/PHPExcel/IOFactory.php";

// 获取前端传入的文件

$file=$_FILES['file'];

//临时文件存放路径

$fileTmp=$file['tmp_name'];

$fileSize=$file['size'];

$fileName=$file['name'];

//错误,输出0,表示文件提交成功

$fileError=$file['error'];

if($fileError==0) {

$inputFileName=$fileTmp;

date_default_timezone_set('PRC');

// 读取excel文件

try{

$inputFileType= PHPExcel_IOFactory::identify($inputFileName);

$objReader= PHPExcel_IOFactory::createReader($inputFileType);

$objPHPExcel=$objReader->load($inputFileName);

}catch(Exception$e) {

}

// 确定要读取的sheet,什么是sheet,看excel的右下角

$sheet=$objPHPExcel->getSheet(0);

$highestRow=$sheet->getHighestRow();

$highestColumn=$sheet->getHighestColumn();

$time=date('Y-m-d h:i:s', time());

// 把数据处理后存入数组

$array=array();

$time=date('Y-m-d h:i:s', time());

for($row= 2;$row<=$highestRow;$row++) {

$rowData=$sheet->rangeToArray('A'.$row.':'.$highestColumn.$row, NULL, TRUE, FALSE);

// 重复数据不插入数据库

$falg=$rowData[0][0];

$sqlIf="SELECT codes FROM tablef where codes = '$falg'";

$querySQL= mysqli_query($conn,$sqlIf);

$arrSQL= mysqli_fetch_array($querySQL);

if($arrSQL== null) {

// 获取到 Excel 每行的数据插入数据库,需根据你自己的表格进行调整

$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."')";

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

}

}

// 成功后返回给前端

echojson_encode(["msg"=>'ok']);

}else{

echojson_encode(["msg"=>'no']);

}

// 断开数据库连接

$conn->close();

?>

结语

这是原生PHP使用的一个方式,我PHP的话只会一个 ThinkPHP 框架,这边我测试的话 ThinkPHP 使用起来跟这个也是差不多的,至于有些其他的php框架的话我没有用过,但是基本都差不多。现在前后端分离占主导地位,对于一些做后台的兄弟们来说,这些批量导入数据的是很常见的,这边就分享一个简单的,对于一些sql语句的话是需要修改的,这里面的sql语句是不安全的,这里提醒一下大家,测试的时候使用这些SQL语句为啥问题,生产环境切记不能这样用。

http://www.jsqmd.com/news/590462/

相关文章:

  • 突破JetBrains IDE限制:试用期重置工具完全指南
  • S2-Pro前端集成示例:在Vue项目中构建实时AI聊天界面
  • Qwen3-0.6B-FP8助力自动化软件测试:生成测试用例与执行报告分析
  • 用ESP32和SSD1680驱动墨水屏,手把手教你做个低功耗电子价签原型
  • C语言开发者入门AI:通过Qwen3-0.6B-FP8理解模型API调用原理
  • Mac用户福利:用Open-AutoGLM和MLX框架,免费运行手机AI助理
  • RWKV7-1.5B-G1A入门指南:10分钟完成Dify平台插件集成
  • Fish Speech 1.5语音克隆安全边界:防滥用机制与伦理使用建议
  • Node.js后端集成Phi-4-mini-reasoning:环境配置与高性能API服务搭建
  • 轻量模型Phi-4-mini-reasoning在嵌入式场景的应用:STM32开发日志分析与代码生成
  • Qwen2.5-VL模型服务API设计:REST与gRPC对比
  • 手把手教你用Qwen3.5-9B:从部署到对话,完整流程解析
  • 当CANopen遇上EtherCAT:用倍福EL6751网关连接伺服驱动器的实战心得
  • DeepSeek-OCR实战案例:教育行业讲义扫描件智能排版与导出
  • SecGPT-14B多场景落地:支撑等保2.0差距分析、整改建议生成
  • mPLUG工具优化技巧:如何提升图片问答响应速度
  • AutoGen Studio入门指南:小白也能轻松玩转AI多代理协作,从部署到实战
  • 实测HeyGem数字人系统:如何用1段音频为100个商品批量生成讲解视频?
  • 基于springboot+vue大学生心理健康管理系统hx1287
  • 隐私安全首选:RMBG-2.0纯本地抠图工具,图片不上传不泄露
  • 嵌入式AI边缘设备与霜儿-汉服-造相Z-Turbo云端协同方案
  • 保姆级避坑指南:从零在RK3588上部署YOLOv11,手把手搞定环境、转换与板端推理
  • 文脉定序系统压力测试与性能调优报告
  • cv_resnet101_face-detection_cvpr22papermogface保姆级教程:从conda环境创建到模型加载成功
  • Pixel Dimension Fissioner 嵌入式应用探索:STM32上的轻量级推理演示
  • Gemma-3-12b-it指令优化指南:提升OpenClaw任务执行准确率
  • YOLO26镜像开箱即用:零基础部署深度学习开发环境
  • 千问3.5-2B开源模型实操:无需HuggingFace账号,内置模型目录直连加载
  • Ostrakon-VL面试题库解析:如何应对视觉AI相关的Java八股文
  • Unity中的灵活条件协程