添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
当遇到需要批量导入数据的时候,前端会上传一个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 读取文件写入数据库

    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语句为啥问题,生产环境切记不能这样用。

    分类:
    后端
    标签: