20250408修复无法导入.xlsx题库问题,替换文件:/app/yodati/phpscript2/importexcel.php

chengfeng 资源网 关注 VIP 八级站长
发表于用户提问版块
用ai修复了一下

<?php
if (!defined('puyuetian')) {
    exit('403');
}

if ('yes' == $_G['GET']['SUBMIT']) {
    // 获取文件地址
    $filedata = $_G['TABLE']['UPLOAD']->getData(Cnum($_POST['excelfileid']));
    $excelpath = "{$_G['SYSTEM']['PATH']}/uploadfiles/{$filedata['target']}s/{$filedata['uid']}/" . 
                substr($filedata['datetime'], 0, 8) . '/' . 
                substr($filedata['datetime'], 8) . "_{$filedata['rand']}.{$filedata['suffix']}";

    if (!file_exists($excelpath)) {
        $_G['HTMLCODE']['TIP'] = '待导入的文件不存在<br>' . $excelpath;
    } else {
        // 设置PHPExcel根目录
        define('PHPEXCEL_ROOT', "{$_G['SYSTEM']['PATH']}/app/yodati/otherframes/");
        
        // 1. 首先加载核心文件
        require_once PHPEXCEL_ROOT . 'PHPExcel.php';
        
        // 2. 加载Autoloader(如果存在)
        if (file_exists(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php')) {
            require_once PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php';
            PHPExcel_Autoloader::Register();
        }
        
        // 3. 确保加载所有必需的类文件
        require_once PHPEXCEL_ROOT . 'PHPExcel/IOFactory.php';
        require_once PHPEXCEL_ROOT . 'PHPExcel/Reader/IReader.php';
        require_once PHPEXCEL_ROOT . 'PHPExcel/Reader/Abstract.php';
        require_once PHPEXCEL_ROOT . 'PHPExcel/Reader/Excel2007.php';

        try {
            // 创建阅读器实例
            $objReader = PHPExcel_IOFactory::createReader('Excel2007');
            
            // 设置读取选项(可选)
            $objReader->setReadDataOnly(true);
            
            // 加载Excel文件
            $objPHPExcel = $objReader->load($excelpath);
            $sheet = $objPHPExcel->getSheet(0);
            
            // 获取表数据
            $highestRow = $sheet->getHighestRow();
            $highestColumn = $sheet->getHighestColumn();
            $ea = array();
            
            // 读取Excel数据
            for ($j = 1; $j <= $highestRow; $j++) {
                for ($k = 'A'; $k <= $highestColumn; $k++) {
                    $cell = $sheet->getCell($k.$j);
                    $str = $cell->getValue();
                    
                    // 处理公式计算结果
                    if ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_FORMULA) {
                        $str = $cell->getCalculatedValue();
                    }
                    
                    $str = mb_convert_encoding($str, 'UTF-8', 'auto');
                    $ea[$k][$j] = $str;
                }
            }

            // 存入数据库
            $importCount = 0;
            $columns = range('A', $highestColumn);
            
            for ($i = 2; $i <= $highestRow; $i++) {
                $array = array();
                $hasData = false;
                
                foreach ($columns as $col) {
                    $colName = $ea[$col][1]; // 第一行是列名
                    $value = $ea[$col][$i] ?? '';
                    
                    if (!empty($value)) {
                        $hasData = true;
                    }
                    $array[$colName] = $value;
                }
                
                if ($hasData) {
                    $_G['TABLE']['APP_YODATI_TIKU']->newData($array);
                    $importCount++;
                }
            }
            
            $_G['HTMLCODE']['TIP'] = "成功导入 {$importCount} 条数据";
            
        } catch (PHPExcel_Exception $e) {
            $_G['HTMLCODE']['TIP'] = 'Excel处理错误: ' . $e->getMessage();
        } catch (Exception $e) {
            $_G['HTMLCODE']['TIP'] = '系统错误: ' . $e->getMessage();
        }
        
        $_G['HTMLCODE']['MAIN'] = template('tip', true);
    }
} else {
    $_G['HTMLCODE']['MAIN'] = template('yodati:admin-importexcel', true);
}

评论列表 评论
chengfeng 资源网 VIP 八级站长 2#
Image
共0条回复,点击查看回复
发布评论

评论: 20250408修复无法导入.xlsx题库问题,替换文件:/app/yodati/phpscript2/importexcel.php

已有0次打赏
(0) 分享
分享

请保存二维码或复制链接进行分享

取消