博客
关于我
PHPExcel导入导出 若在thinkPHP3.2中使用(无论实例还是静态调用(如new classname或classname::function)都必须加反斜杠,因3.2就命名空间,如/c...
阅读量:793 次
发布时间:2023-02-28

本文共 3750 字,大约阅读时间需要 12 分钟。

PHPExcel类导入与导出Excel表格的技术实现

PHPExcel类是PHP中一个强大的Excel表格处理插件,能够方便地实现Excel文件的导入与导出。本文将详细介绍PHPExcel类在PHP环境下的应用方法。


一、PHPExcel 导出 Excel 的实现

1. 环境设置

在实际应用中,需要确保PHPExcel类能够正确加载。以下是常见的环境设置方法:

// 在应用的配置文件中,确保以下路径正确set_path('.'. PATH_SEPARATOR . Yii::app()->basePath.'/lib/PHPExcel' . PATH_SEPARATOR . get_include_path());// 或直接使用 Yii::import() 导入类文件require_once "PHPExcel.php";require_once 'PHPExcel/IOFactory.php';require_once 'PHPExcel/Writer/Excel5.php';

2. 数据填充

假设我们有一个数据数组 $data,需要将其导入到Excel中:

// 创建一个新的Excel文件$resultPHPExcel = new PHPExcel();// 设置默认字体和数值格式$resultPHPExcel->getActiveSheet()->setDefaultFont('Arial');$resultPHPExcel->getActiveSheet()->setDefaultNumberFormat('General');// 填充数据$i = 2;foreach ($data as $item) {    $resultPHPExcel->getActiveSheet()->setCellValue('A' . $i, $item['quarter']);    $resultPHPExcel->getActiveSheet()->setCellValue('B' . $i, $item['name']);    $resultPHPExcel->getActiveSheet()->setCellValue('C' . $i, $item['number']);    $i++;}

3. 导出设置

在完成数据填充后,设置导出选项:

// 设置导出文件名$outputFileName = 'result.xlsx';// 创建导出对象$xlsWriter = new PHPExcel_Writer_Excel5($resultPHPExcel);// 设置输出内容类型header("Content-Type: application/force-download");header("Content-Type: application/octet-stream");header("Content-Type: application/download");header('Content-Disposition: inline; filename="' . $outputFileName . '"');header("Content-Transfer-Encoding: binary");header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");header("Cache-Control: must-revalidate, post-check=0, pre-check=0");header("Pragma: no-cache");// 导出文件$xlsWriter->save("php://output");

二、PHPExcel 导入 Excel 的实现

1. 文件上传

首先,需要上传Excel文件到服务器:

if ($_POST['leadExcel'] == "true") {    $filename = $_FILES['inputExcel']['name'];    $tmp_name = $_FILES['inputExcel']['tmp_name'];    $msg = uploadFile($filename, $tmp_name);    echo $msg;}

2. 文件处理

uploadFile函数中,进行文件的基本处理:

function uploadFile($file, $filetempname) {    // 设置文件存储路径    $filePath = 'uploads/';    require_once '../PHPExcel/PHPExcel.php';    require_once '../PHPExcel/PHPExcel/IOFactory.php';    require_once '../PHPExcel/PHPExcel/Reader/Excel5.php';    // 生成新的文件名(避免重复)    $time = date("y-m-d-H-i-s");    $extend = strrchr($file, '.');    $name = $time . $extend;    $uploadfile = $filePath . $name;    // 移动文件    $result = move_uploaded_file($filetempname, $uploadfile);    if ($result) {        // 进行数据导入        require_once 'conn.php';        $objReader = PHPExcel_IOFactory::createReader('Excel5');        $objPHPExcel = $objReader->load($uploadfile);        // 获取工作表        $sheet = $objPHPExcel->getActiveSheet();        $highestRow = $sheet->getHighestRow();        $highestColumn = $sheet->getHighestColumn();        // 数据处理        $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);        $strs = array();        for ($row = 1; $row <= $highestRow; $row++) {            for ($col = 0; $col < $highestColumnIndex; $col++) {                $strs[$col] = $sheet->getCellByColumnAndRow($col, $row)->getValue();            }            $sql = "INSERT INTO `te` (`1`, `2`, `3`, `4`, `5`) VALUES ('{$strs[0]}', '{$strs[1]}', '{$strs[2]}', '{$strs[3]}', '{$strs[4]}')";            if (!mysql_query($sql)) {                return false;                echo 'sql语句有误';            }        }        unlink($uploadfile);        return '导入成功!';    } else {        return '导入失败!';    }}

3. HTML 表单实现

在前端,通过以下表单实现文件上传:


三、注意事项

  • PHPExcel扩展安装:确保PHPExcel类已经正确安装,并且相关依赖文件已加载。
  • 文件路径设置:根据实际服务器路径调整文件存储位置。
  • 数据格式处理:需要根据实际需求设置合适的数据格式和字体样式。
  • 兼容性问题:不同Excel版本可能有不同的格式要求,需确保读取和写入的格式一致。
  • 通过以上方法,可以实现对Excel文件的完整导入与导出,提升数据处理的效率和准确性。

    转载地址:http://xytfk.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | 基于PyTorch实现Faster RCNN目标检测
    查看>>
    OpenMCU(一):STM32F407 FreeRTOS移植
    查看>>
    OpenMMLab | 【全网首发】Llama 3 微调项目实践与教程(XTuner 版)
    查看>>
    OpenPPL PPQ量化(5):执行引擎 源码剖析
    查看>>
    Openresty框架入门详解
    查看>>
    openshift搭建Istio企业级实战
    查看>>
    Openstack企业级云计算实战第二、三期培训即将开始
    查看>>
    OpenStack安装部署实战
    查看>>
    OpenStack的基本概念与架构详解
    查看>>
    openstack虚拟机迁移live-migration中libvirt配置
    查看>>
    ORACEL学习--理解over()函数
    查看>>
    Oracle dbms_job.submit参数错误导致问题(ora-12011 无法执行1作业)
    查看>>
    Oracle GoldenGate Director安装和配置(无图)
    查看>>
    oracle script
    查看>>
    Oracle SOA Suit Adapter
    查看>>
    Oracle Spatial空间数据库建立
    查看>>
    UML— 活动图
    查看>>
    Oracle 写存储过程的一个模板还有一些基本的知识点
    查看>>
    oracle 创建字段自增长——两种实现方式汇总
    查看>>
    Oracle 升级10.2.0.5.4 OPatch 报错Patch 12419392 Optional component(s) missing 解决方法
    查看>>