使用phpexcel解析Excel数据表并存储到数据库中全过程_PHP_thinkphp_cmf

分享经验是为了让你少走弯路————华伟君


使用PHPExcel解析Excel数据表并存储到数据库中全过程


第一部分:thinkphp中实例化上传类获取from表单提交的文件(非thinkPHP用户可以忽略,直接看第二部分)


HTML文件核心代码:
<form action="{:U('Question/add_excel_post')}" enctype="multipart/form-data" method="post">
<input type="file" name="excel_file" class="input">
<button class="btn btn-primary" type="submit">上传</button>
</form>
PHP文件接收上传的核心代码:
    $upload = new \Think\Upload();// 实例化上传类
    $upload->maxSize   =     3145728 ;// 设置附件上传大小
    $upload->exts      =     array('xls', 'xlsx');// 设置附件上传类型
    $upload->rootPath  =      './'; // 设置附件上传根目录
    $upload->savePath  =      'Uploads/ExamPaper/'; // 设置附件上传(子)目录
    $upload->autoSub   =    false;//不自动生成子文件夹
    // 上传单个文件 
    $info   =   $upload->uploadOne($_FILES['excel_file']);
$info生成上传信息,并进行判断,如果上传成功,则拼接上传到服务器的文件路径及名称
if(!$info){
        $this->error($upload->getError());
    }else{
        $file_puth = './'.$info['savepath'].$info['savename'];

第二部分:导入PHPExcel类库,并对Excel表格进行查询解析


Thinkphp中,第三方类库的存放文件路径是:ThinkPHP\Extend\Vendor
内置类库路径常量为 VENDOR_PATH

.xls文件与.xlax文件的区别:
版本问题 ,XLSX是高版本。
07版以后的扩展名都是.xlsx ,是用新的基于XML的压缩文件格式取代了其目前专有的默认文件格式,在传统的文件名扩展名后面添加了字母x(即.docx取代.doc、.xlsx取代.xls,等等),使其占用空间更小,可以向下兼容xls。

在php文件中导入PHPExcel类库,并对Excel表格进行解析的代码:
require_once VENDOR_PATH.'PHPExcel_1/PHPExcel/IOFactory.php';
require_once VENDOR_PATH.'PHPExcel_1/PHPExcel.php';
//判断文件版本,选择对应的解析文件
if($info['ext']=='xlsx'){
    require_once VENDOR_PATH.'PHPExcel_1/PHPExcel/Reader/Excel2007.php';
    $objReader = \PHPExcel_IOFactory::createReader('Excel2007');
        }else{
    require_once VENDOR_PATH.'PHPExcel_1/PHPExcel/Reader/Excel5.php';
    $objReader = \PHPExcel_IOFactory::createReader('Excel5');
}

//解析Excel文件
$objPHPExcel = $objReader->load($file_puth);
$sheet = $objPHPExcel->getSheet(0);// 读取第一个工作表(编号从 0 开始) 
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumn = $sheet->getHighestColumn(); // 取得总列数

//循环读取excel文件,读取一条,插入数组一条
for($j=2;$j<=$highestRow;$j++)
        {
            for($k='A';$k<=$highestColumn;$k++)
            {
                //读取单元格
                $ExamPaper_arr[$j][$k]= $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();
            }
    }

第三部分:将获取到的数据存入数据库


核心代码:使用foreach函数,循环对字段数组赋值,然后存入数据库
$question_model=M('question');
$question_relationships_model = M('question_relationships');
$answer_model = M('answer');
foreach ($ExamPaper_arr as $key => $value) 
        {
$title_data['q_id'] = empty($value['A'])?0:$value['A'];
$title_data['post_title'] = empty($value['B'])?0:$value['B'];
$title_data['post_description'] = empty($value['D'])?0:$value['D'];
$title_data['post_difficulty'] = empty($value['E'])?0:$value['E'];
$title_data['post_date'] = time();
$question_model->add($title_data);
}

最后


少侠,看完了,点个赞噻~

好的,我会尽力回答您的问题。关于phpexcel导入mysql数据库文件的问题,您可以使用PHPExcel类来实现。以下是一个简单的实例,演示如何将Excel文件的数据导入到MySQL数据库: 1. 首先,您需要下载并安装PHPExcel类库,您可以从GitHub上免费下载。 2. 创建一个名为import_excel.php的文件,并在其包含PHPExcel的文件: ``` require_once 'PHPExcel/Classes/PHPExcel.php'; ``` 3. 接下来,您需要连接到您的MySQL数据库。您可以使用以下代码: ``` $host = "localhost"; $username = "username"; $password = "password"; $dbname = "database_name"; $conn = mysqli_connect($host, $username, $password, $dbname); if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } ``` 4. 接下来,您需要读取Excel文件的数据。您可以使用以下代码: ``` $filename = "example.xlsx"; // Create new PHPExcel object $objPHPExcel = PHPExcel_IOFactory::load($filename); // Get worksheet dimensions $sheet = $objPHPExcel->getActiveSheet(); $highestRow = $sheet->getHighestRow(); $highestColumn = $sheet->getHighestColumn(); // Loop through each row of the worksheet in turn for ($row = 2; $row <= $highestRow; $row++) { // Read a row of data into an array $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE); // Insert row data into database $sql = "INSERT INTO table_name (column1, column2, column3) VALUES ('" . $rowData[0][0] . "', '" . $rowData[0][1] . "', '" . $rowData[0][2] . "')"; if (mysqli_query($conn, $sql)) { echo "Record inserted successfully"; } else { echo "Error inserting record: " . mysqli_error($conn); } } ``` 5. 最后,记得关闭数据库连接: ``` mysqli_close($conn); ``` 这就是一个简单的使用PHPExcel类将Excel文件的数据导入到MySQL数据库的示例。您可以根据自己的需求进行修改和扩展。希望能对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值