thinkphp6 + phpexcel 导入导出数据,设置特殊表格

本文介绍了如何在Windows环境下使用Composer安装PHPExcel库,详细步骤包括文件上传、批量导入Excel数据到数据库并进行CSV导出,以及Model类的实现。重点展示了如何处理Excel文件、数据解析和格式化的过程。

第一步:安装excel,使用composer安装,我的是在window下,直接cmd切换到项目下面,输入

composer require phpoffice/phpexcel,然后就等待安装完成。如下图:

第二步:引入相关类

<?php
namespace app\admin\controller;
use app\admin\model\Bingli;
use app\admin\model\Moneyinfo;
use think\Controller;
use think\Validate;
use think\facade\Request;
use think\facade\Db;
use think\facade\Session;
use think\facade\View;
use PHPExcel_IOFactory;   //这个是三方类

class Binglii extends Base
{ 
    /*
     * 批量导入数据详情
     */
    public function upAgent(){
        if(Request::param('html') == false){            
            // 获取表单上传文件
            $file = request()->file('file');
            if(empty($file)){
                return json(['info'=>'请选择上传文件!','status'=>0]);
            }

            // 移动到框架应用根目录/public/upload/ 目录下,并修改文件名为时间戳
            $savename = \think\facade\Filesystem::putFile('excel', $file, 'time');
            // 文件名称
            $info = explode('/', $savename);                     
            $file = public_path().'public/upload/excel/'.$info['excel'];
            //2022-08-25  补充,最近发现老是报错PHPExcel_IOFactory找不到,于是单独引入文件
            require_once '../vendor/phpoffice/phpexcel/Classes/PHPExcel.php';
            require_once '../vendor/phpoffice/phpexcel/Classes/PHPExcel/IOFactory.php';

            //导入 
            $objPHPExcel = PHPExcel_IOFactory::load($file); //获取sheet表格数目
            //$objReader = PHPExcel_IOFactory::createReader('Excel5');
            //$objPHPExcel = $objReader->load($file,$encode='utf-8');
            $sheetCount = $objPHPExcel->getSheetCount(); //默认选中sheet0表
            $sheetSelected = 0;
            $objPHPExcel->setActiveSheetIndex($sheetSelected); 
            //获取表格行数
            $rowCount = $objPHPExcel->getActiveSheet()->getHighestRow(); 
            //获取表格列数
            $columnCount = $objPHPExcel->getActiveSheet()->getHighestColumn();
            $dataArr = array();
            /* 循环读取每个单元格的数据 */
            for ($i = 2; $i <= $rowCount; $i++) {
                $data['mi_num'] = $objPHPExcel->getActiveSheet()->getCell("D3")->getValue();   
                $data['mi_time'] = $objPHPExcel->getActiveSheet()->getCell("B".$i)->getFormattedValue(); // getFormattedValue 获取本来的格式
                $data['mi_chargeItems'] = $objPHPExcel->getActiveSheet()->getCell("E".$i)->getValue();
                $data['mi_unit'] = $objPHPExcel->getActiveSheet()->getCell("M".$i)->getValue();
                $data['mi_quantity'] = $objPHPExcel->getActiveSheet()->getCell("O".$i)->getValue();
                $data['mi_unitPrice'] = $objPHPExcel->getActiveSheet()->getCell("R".$i)->getValue();
                $data['mi_money'] = $objPHPExcel->getActiveSheet()->getCell("V".$i)->getValue();
                $data['mi_payC
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值