使用PHPExcel将Excel中的内容存储到数据库

PHPExcel将.xlsx文件中的内容存储到MySQL数据库

一、PHPExcel下载

PHPExcel下载可以参照我之前发过的文章——Composer安装与PHPWord的下载与使用

  1. 查找版本命令

composer show --all phpoffice/phpexcel

在这里插入图片描述

  1. 下载命令
    我选择的是1.8.2版本的,下载命令输入:

composer require phpoffice/phpexcel 1.8.2

后续的使用方法按照博客中说的做就可。

二、数据说明

  1. Excel文件
    格式: .xls 或者 .xlsx
    内容:
    在这里插入图片描述
  2. 数据库中的数据表:
    在这里插入图片描述

三、功能实现代码

	require './vendor/autoload.php';//引用安装的PHPExcel等文件

	$filename = "基础信息.xlsx"; //指定excel文件从上传中取出
    $objReader = \PHPExcel_IOFactory::createReader('Excel2007');
    $objPHPExcel = $objReader->load($filename, 'utf-8');

    $sheet = $objPHPExcel->getSheet(0);
    $highestRow = $sheet->getHighestRow(); // 取得总行数
    $highestColumn = $sheet->getHighestColumn(); // 取得总列数

    $conn = mysqli_connect('localhost', 'root', '', 'test'); //需要更改的账号密码与数据库
    mysqli_query($conn, 'set names utf8'); //进行编码统一


        $columnHead_Tea = '';
        $column_Tea = '';
        $head_letter = 'A';
        for ($head = 1; $head <= 4; $head++) //获取第一行标题,并存储入数组中
        {
            $columnValue = $objPHPExcel->getActiveSheet()->getCell($head_letter . 1)->getValue();
            if ($head == 4) {
                $columnHead_Tea = $columnHead_Tea . $columnValue;
            } else {
                $columnHead_Tea = $columnHead_Tea . $columnValue . ',';
            }
            $head_letter++;         
        }
        echo ($head++) . '<br/>';
        echo $columnHead_Tea . '<br/>';
        echo $highestRow . '<br/>';
        $column_letter = 'A';
        for ($i = 2; $i <= $highestRow; $i++) //i=2是因为第一行表为标题,从第二行开始取 
        {
            for ($j = 1; $j <= 4; $j++) { //j为列,从第A列开始取值
                $columnValue = $objPHPExcel->getActiveSheet()->getCell($column_letter . $i)->getValue(); //获取A列的值
                if ($j == 4) {
                    $column_Tea = $column_Tea . '\'' . $columnValue . '\'';
                } else {
                    $column_Tea = $column_Tea . '\'' . $columnValue . '\'' . ',';
                }
                $column_letter++;
            }

            $sql = "INSERT INTO teacher ($columnHead_Tea) VALUES ($column_Tea)";
            $result = mysqli_query($conn, $sql);

            echo $column_Tea . '<br/>';
            $column_Tea = '';
            $column_letter = 'A';
        }
    }

四、一些代码说明

  1. 关于 INSERT INTO VALUES
    在菜鸟教程中,该命令的使用是这样的:

INSERT INTO table_name (column1,column2,column3,…) VALUES (value1,value2,value3,…);

在上面的代码中没有一一写出数据库中数据表的字段、以及所录入的内容,而是利用了for 循环语句,将 column1,column2,column3,… 写成了字符串**$columnHead_Tea**,该字符串是这样的:

姓名,账号,密码,学历,职称

而 value1,value2,value3,…也通过对Excel表格内容的读取记录成字符串**$column_Tea**,该字符串是这样的:

‘张三’,‘12345678’,‘0000’,‘硕士研究生’,‘讲师’

每个内容都需要用 英文单引号引用起来

  1. 关于对Excel多列的循环
    Excel的列号用A、B、C…AA、AB、AD…等表示。
    在PHP中允许用自增或自减符号对字母进行+1或-1操作。即:
  $head_letter = 'A';
  ++$head_letter;//输出结果为B

且可以判断大小,即 可判断出 A 小于B、A 小于C、A 小于AA…

  1. 关于字母的for循环输出

for循环中,由命令:

for ($L = 'A'; $L < 'AA'; ++$L) {
	echo $L.'<br/>';  //输出结果:A
}

其只能输出第一个L值,即A。
而对于:

for ($L = 'A'; $L < 'Z'; ++$L) {
	echo $L;  //输出结果:ABCDEFGHIJKLMNOPQRSTUVWXY
}
  1. 关于字母大小的比较
    对于2中所述,本以为是程序不能判断 A 与 AA 的大小,但是由
if ('A' < 'AA')
    echo 'A < AA';
else
    echo "Can't judge!";

该输出结果:A < AA。
因此,在上述功能代码中,没有直接对字母进行for循环获取列号。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值