IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 原生 PHP 使用 PHPExcel 读取 excel 数据批量上传数据到数据库 -> 正文阅读

[PHP知识库]原生 PHP 使用 PHPExcel 读取 excel 数据批量上传数据到数据库

应用场景

在这里插入图片描述
当遇到需要批量导入数据的时候,前端会上传一个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 读取文件写入数据库

<?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 查询。
		}
	}

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


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


?>

结语

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

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 18:34:35  更:2021-09-11 18:37:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 7:15:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码