zoukankan      html  css  js  c++  java
  • PHPExcel数据导入(含图片)

    PHPExcel是一个PHP类库,用来帮助我们简单、高效实现从Excel读取Excel的数据和导出数据到Excel。

    首先下载压缩包:

        https://codeload.github.com/PHPOffice/PHPExcel/zip/1.8

    解压后如下:

    在根目录创建一个test.php用来读取excel的内容 excel文件的内容如下:

    然后test.php代码如下:

    <?php
    header("content-type:text/html;charset=utf8");
    include './Classes/PHPExcel/IOFactory.php';//引入PHPExcel类
    $inputFileName = './test.xls';//读取的excel文件
    date_default_timezone_set('PRC');
    // 读取excel文件
    try {
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcel = $objReader->load($inputFileName);
    } catch(Exception $e) {
    die('加载文件发生错误:"'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
    }
    $sheet = $objPHPExcel->getSheet(0);
    $data=$sheet->toArray();//该方法读取不到图片 图片需单独处理
    $imageFilePath='./images/'.date('Y-m-d').'/';//图片在本地存储的路径
    if (! file_exists ( $imageFilePath )) {
    mkdir("$imageFilePath", 0777, true);
    }
    //处理图片
    foreach($sheet->getDrawingCollection() as $img) {
    list($startColumn,$startRow)= PHPExcel_Cell::coordinateFromString($img->getCoordinates());//获取图片所在行和列
    $imageFileName = $img->getCoordinates() . mt_rand(100, 999);
    switch($img->getMimeType()) {
    case 'image/jpg':
    $imageFileName.='.jpg';
    imagejpeg($img->getImageResource(),$imageFilePath.$imageFileName);
    break;
    case 'image/gif':
    $imageFileName.='.gif';
    imagegif($img->getImageResource(),$imageFilePath.$imageFileName);
    break;
    case 'image/png':
    $imageFileName.='.png';
    imagepng($img->getImageResource(),$imageFilePath.$imageFileName);
    break;
    }
    $startColumn = ABC2decimal($startColumn);//由于图片所在位置的列号为字母,转化为数字
    $data[$startRow-1][$startColumn]=$imageFilePath.$imageFileName;//把图片插入到数组中

    }
    print_r($data);die;
    function ABC2decimal($abc){
    $ten = 0;
    $len = strlen($abc);
    for($i=1;$i<=$len;$i++){
    $char = substr($abc,0-$i,1);//反向获取单个字符

    $int = ord($char);
    $ten += ($int-65)*pow(26,$i-1);
    }
    return $ten;
    }

    以上代码只是处理图片,得到图片路径插入到数组中,如需数据入库,可循环insert,自行处理,打印结果如下:


  • 相关阅读:
    ubuntu一般软件安装在什么目录
    Swing是一把刀
    eclipse 3.6的VE配置 Visual Editor for eclipse3.6
    有关import sun.audio.AudioPlayer(或者其它文件)的问题
    ubuntu 下安装jdk
    linux查看java jdk安装路径
    关于绿色
    Swing如何正确的处理界面中的线程(EDT)
    在Eclipse4.2x中安装最新版插件WindowBuilder
    Eclipse java swing开发环境
  • 原文地址:https://www.cnblogs.com/changning0822/p/9921055.html
Copyright © 2011-2022 走看看