当前位置:首页 > 网站技术 > 后端技术 > 正文内容

使用PHPExcel函数对Excel表格数据进行操作并通过接口上传万条数据

小彬2020-08-29后端技术130

PHPExcel函数下载地址:https://gitee.com/bin012/phpexcel-1.8

PHPOffice函数github地址:https://github.com/PHPOffice

使用PHPExcel函数对Excel表格数据进行操作并通过接口上传万条数据

思路是:1使用PHPExcel函数读取表格数据并以二维数组的形式输出

              2对数据进行处理,使用explode()、count()、strlen()、strrpos()、substr()、mt_rand()函数

              3拿到某平台上传接口和数据规则,进行上传。(上传时用到sleep()间隔请求)

知识点:提高了对PHP数组及一系列函数使用的熟练度。

我就直接放代码和注释了。


<?php
$fileName = "../two.xlsx"; //读取excel文件,并进行相应处理
if (!file_exists($fileName)) {
    exit("文件".$fileName."不存在");
}
require_once 'PHPExcel-1.8/Classes/PHPExcel.php'; //引入PHPExcel类库
require_once 'PHPExcel-1.8/Classes/PHPExcel/IOFactory.php'; 
require_once 'PHPExcel-1.8/Classes/PHPExcel/Reader/Excel5.php'; 

$objReader = PHPExcel_IOFactory::createReader('excel2007');//使用excel2007 for 2007格式
$objPHPExcel = $objReader->load($fileName); //$fileName指定excel 

$sheet = $objPHPExcel->getSheet(0); 
$highestRow = $sheet->getHighestRow(); // 取得总行数 
$highestColumn = $sheet->getHighestColumn(); // 取得总列数 

echo '·'.$highestRow.'行'.$highestColumn .'列'; //输出Excel表格的行和列

// 自定义函数arrToOne
function arrToOne($Array){ 
    $arr = array(); 
    foreach ($Array as $key => $val) { 
        if( is_array($val) ) { 
            $arr = array_merge($arr, arrToOne($val)); 
        } else { 
            $arr[] = $val; 
        } 
    } 
    return $arr; 
}
// 遍历表格数据,并以二维数组的形式输出
$dataArr = array();
for ($row = 1; $row <= $highestRow; $row++){
    $dataArr[] = arrToOne($sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE));
}   
echo '<pre>';
print_r($dataArr);//打印结果
echo '</pre>';

//此处对表格数据进行处理,详细的我就不贴代码了。
$dataAll =array();
$dataAll =$dataArr;

//定义POST请求方法
function send_post($url, $post_data) {
    $postdata = http_build_query($post_data);
    $options = array(
      'http' => array(
      'method' => 'POST',
      'header' => 'Content-type:application/x-www-form-urlencoded',
      'content' => $postdata,
      'timeout' => 15 * 60 // 超时时间(单位:s)
      )
    );
    $context = stream_context_create($options);
    $result = file_get_contents($url, false, $context);
    return $result;
  };
  
  // 循环发送请求上传数据
  for($i=0;$i<$highestRow;$i++){
    // 时间戳
    $dateA =time();
    // 上传的数据格式,以数组形式展示
    $post_data = array(
        'access_token' => ,
        "merchants_id" =>,
        "unique_key" =>$dateA,
        "material_type" =>,
        "material_content" =>json_encode($dataAll[$i])
    );
    // 请求间隔时间
    usleep(200000);
    // 请求接口
    $res = send_post('上传数据接口', $post_data);
    //对json格式的字符串进行解码,同时进行数组化
    $arr =array(json_decode($res));
    //打印结果$post_data
    echo '<pre>';
    print_r($arr);
    echo '</pre>';   
  }

更多的PHPExcel操作参考https://www.cnblogs.com/makalochen/p/12834440.html

本文写的很详细,如有时间我也会研究,不过还是使用应该最新的PHPOffice函数


标签: php
分享给朋友:
返回列表

上一篇:Openssl常用功能和SSO单点登录逻辑

没有最新的文章了...

相关文章

PHPCMS完成手机端搭建全教程(新手看完即会)

PHPCMS完成手机端搭建全教程(新手看完即会)

注:这篇文章是在我做完一个自适应和一个响应式网站后写的。所以我建议,如果可以的话,最好用@media css做响应式网站,这样就不用考虑手机端的各种问题。因为我当初做的就是自适应,但是没有想到后面的坑...

修改phpcms后台添加或编辑时的弹出新窗口

修改phpcms后台添加或编辑时的弹出新窗口

如题,在后台添加内容的时候每次都要弹出新的窗口,所以让内容发布人员极其不爽而我当然是要修改该问题,使新窗口打开不用弹出。找到phpcms\modules\content\templates\conte...

PHPCMS实现表单提交数据功能

PHPCMS实现表单提交数据功能

PHPCMS实现表单提交数据功能一般的童鞋可能都会遇到明明在后台设置了表单,为啥在前台页面只提交了一次就不能提交了。造成这个原因是因为在phpcms后台表单设置里,默认设置了否的“允许同一IP多次提交...

phpcms v9模板制作及二次开发常用代码

phpcms v9模板制作及二次开发常用代码

0:调用最新文章,带所在版块{pc:get sql="SELECT a.title, a.catid, b.catid, b.catname...

PHP入门之Linux基础和shell命令行

PHP入门之Linux基础和shell命令行

centos 一般支持10年nubuntu lts 一般支持5年一、linux系统环境搭建wmware 虚拟机下载centos  DVD ISO 或者EVerythine ISO 镜像&nb...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

分享:

支付宝

微信