使用php脚本 将Excel中的数据生成SQL语句

①由于PHPExcel不进行更新,所以采取新的类库PHPSpreadSheet(PHP7以上)

1.下载PHPSpreadSheet   下载地址:GitHub 官方PHPSpreadSheet库

2.编写PHP脚本

<?php

require "PhpSpreadSheet/vendor/autoload.php";

use PhpOffice\PhpSpreadsheet\Spreadsheet;
    $uploadfile    = "users1590801158.xlsx";
    $inputFileType = \PhpOffice\PhpSpreadsheet\IOFactory::identify($uploadfile);  // 获得文件类型
    $reader        = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType); // 根据文件类型创建读写器
    $PHPExcel      = $reader->load($uploadfile); // 载入excel文件
    $sheet         = $PHPExcel->getSheet(0); // 读取第一個工作表
    $highestRow    = $sheet->getHighestRow(); // 取得总行数
    $highestColumm = $sheet->getHighestColumn(); // 取得总列数

    // echo $highestRow.PHP_EOL.$highestColumm;
    $data = [];
    for($row = 2; $row <= $highestRow; $row++){
        for ($column = 'A'; $column <= $highestColumm; $column++){ //列数是以A列开始
            if (empty($sheet->getCell($column . $row)->getValue()) == false) {
                $str = $sheet->getCell($column . $row)->getValue();
                $data[$row][] = $str;  // 先将数据存入二维数组中(方便SQL语句处理),也可以不用这步
            }
        }
    }
    //print_r($data);
    $sql = "insert into users (`id`, `username`, `password`, `role`) values ".PHP_EOL;
    foreach ($data as $key => $value) {
        # code...
        $str = "('".$value[0]."','".$value[1]."','".$value[2]."','".$value[3]."')";
        $sql .= $str;                 // 逐条生成SQL语句
        if($key< $highestRow){
            $sql .= ",".PHP_EOL;
        }
    }
    $sql .= ";";
    //echo $sql;
    $file = "D:/OJ/".time()."_OJ.sql"; // 创建文件生成位置及文件名
    $sqlFile = fopen($file, "w");      
    fwrite($sqlFile, $sql);            // 将sql语句写入
    fclose($sqlFile);                  // 释放资源
    echo "SQL文件生成完毕!". PHP_EOL." 请到". dirname($file)."目录下查看";

②旧版本操作(PHP7以下):

1.下载PHPExcel扩展类         下载地址:github官方PHPExcel库

2.编写PHP脚本

<?php

include "./PHPExcel/Classes/PHPExcel/IOFactory.php"; // 引入类库

header("Content-type: text/html; charset=utf-8");   // 设置文件类型,防止出现乱码

$inputFileName = "./student.xlsx";          // 定义需要加载的xlsx文件路径及文件名

date_default_timezone_set('PRC');                   // 设置时区
// 读取excel文件
try {
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {

}

// 确定要读取的sheet,什么是sheet,看excel的右下角,真的不懂去百度吧
$sheet = $objPHPExcel->getSheet(2);                // 获取特定sheet
$highestRow = $sheet->getHighestRow();             // 获取行数
$highestColumn = $sheet->getHighestColumn();       // 获取列数


$sql = "insert into student_profiles(`user_id`,`student_number`,`name`,`sex`,`major_id`,`major_class_id`) values".PHP_EOL;      // 插入语句
for ($row = 2; $row <= $highestRow; $row++){   
//获取excel文件的数据,$row=2代表从第二行开始获取数据
    $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
//这里得到的rowData都是一行的数据,得到数据后自行处理,我们这里只打出来看看效果
    //print_r($rowData);  // 生成二维数组
    $val = "('".($row-1) ."','". $rowData[0][0]."','".$rowData[0][1]."','".$rowData[0][2]. "','".$rowData[0][4][7]."')";  // 按顺序添加
    if($row != $highestRow){
    	$val .= ",".PHP_EOL;
    }
    // print_r($str1."<br>");
    $sql .= $val; // 生成sql语句
}
//print_r($str);
$sql .= ";";            // sql 语句最后为分号
$file = "D:/OJ/".time()."_OJ.sql";  // sql文件存放位置
if(file_exists($file)){         // 判断文件是否存在
	echo "文件存在!";
}
else{
	$sqlFile = fopen($file, "w"); // 创建并打开文件,获取文件指针资源
	fwrite($sqlFile, $sql);       // 将sql语句写入文件
	fclose($sqlFile);             // 关闭资源指针
	echo "SQL文件生成完毕!". PHP_EOL." 请到". dirname($file)."目录下查看";
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值