php导入excel数据入库 (php从excel导入数据库数据)
PHP导入Excel数据入库
在Web开发过程中,经常会涉及到数据导入的问题。Excel作为一种常见的电子表格,也经常用于处理数据。PHP作为一门服务端脚本语言,拥有处理Excel数据导入数据库的能力。接下来,我们将学习如何使用PHP将Excel数据导入到数据库中。
步骤一:创建Excel文件
我们需要创建一个Excel文件。在Excel中,按照实际情况输入数据并保存为“.xlsx”文件格式。这个Excel文件将用于测试数据导入的功能。
步骤二:解析Excel文件
通过使用PHPExcel这个开源的PHP库,我们可以将Excel文件数据解析成PHP可读取的数据。解析Excel文件的代码如下:
“`
//引用PHPExcel库
require_once ‘PHPExcel/PHPExcel.php’;
//新建Excel读取对象
$objReader = PHPExcel_IOFactory::createReader(‘Excel2023’);
//设置为默认格式读取Excel
$objPHPExcel = $objReader->load(“data.xlsx”);
//获取工作表数量
$sheetCount = $objPHPExcel->getSheetCount();
//循环读取工作表
for ($sheetIndex = 0; $sheetIndex
//选择当前工作表
$objPHPExcel->setActiveSheetIndex($sheetIndex);
//获取工作表名称
$sheetName = $objPHPExcel->getActiveSheet()->getTitle();
//获取工作表更大行数和列数
$highestRow = $objPHPExcel->getActiveSheet()->getHighestRow();
$highestColumn = $objPHPExcel->getActiveSheet()->getHighestColumn();
//循环读取工作表每一行数据
for ($rowIndex = 2; $rowIndex
$rowData = array();
//循环读取每个单元格的数据
for ($columnIndex = ‘A’; $columnIndex
$cellValue = $objPHPExcel->getActiveSheet()->getCell($columnIndex.$rowIndex)->getValue();
//根据单元格数据类型格式化数据
$cellValueType = PHPExcel_Cell_DataType::dataTypeForValue($cellValue);
switch ($cellValueType) {
case ‘s’:
$cellValue = trim($cellValue);
break;
case ‘n’:
$cellValue = trim($cellValue);
break;
case ‘b’:
$cellValue = ($cellValue === true) ? ‘1’ : ‘0’;
break;
case ‘e’:
$cellValue = trim($cellValue);
break;
default:
$cellValue = trim($cellValue);
break;
}
$rowData[] = $cellValue;
}
//处理读取到的数据 $rowData
//将数据存储到数据库
}
}
“`
在这个示例中,我们首先引入了PHPExcel库,并新建一个Excel读取对象。然后使用Excel2023格式读取Excel文件数据。我们用for循环逐个读取Excel的工作表。对于每个工作表,我们获取了它的名称、更大行数和更大列数。接着,我们用另一个for循环逐行读取Excel工作表的数据。在循环中,我们再次使用for循环逐个读取单元格数据,将值转换为PHP可读取的数据类型,并将其存储在一个数组中。
步骤三:将数据存储到数据库
在例子中,我们将$rowData数组中获取到的Excel数据存储到数据库中。在此处,我们使用了PDO类。PDO是PHP的扩展,提供了一个简单的API来连接和操作多种数据库。需要注意的一点是,在此处数据库必须提前配置好,否则无法连接到数据库中。
“`
//建立数据库连接
$dbhost = ‘localhost’;
$dbname = ‘test’;
$dbuser = ‘root’;
$dbpass = ”;
$conn = new PDO(“mysql:host=$dbhost;dbname=$dbname”, $dbuser, $dbpass);
//预处理SQL语句
$sql = “INSERT INTO `table_name` (`column1`, `column2`, `column3`) VALUES (?, ?, ?)”;
$stmt = $conn->prepare($sql);
//准备一行数据
$data = array(
$rowData[0],
$rowData[1],
$rowData[2]
);
//执行SQL语句
$stmt->execute($data);
“`
在此处,我们使用了准备好的SQL语句来插入数据到指定的数据表中。预处理SQL语句是为了安全地避免SQL注入攻击。再创建PDO对象时,我们传入了连接数据库的配置参数。预处理语句中的?号是占位符,可以使用execute方法将实际的Excel数据插入到数据库中。
步骤四:测试
现在,我们已经完成了将Excel数据导入到数据库的各项准备工作。现在,我们需要运行这个程序来测试它的效果。如果一切正常,就能看到Excel数据成功地导入到数据库中。
“`
//引用PHPExcel库
require_once ‘PHPExcel/PHPExcel.php’;
//建立数据库连接
$dbhost = ‘localhost’;
$dbname = ‘test’;
$dbuser = ‘root’;
$dbpass = ”;
$conn = new PDO(“mysql:host=$dbhost;dbname=$dbname”, $dbuser, $dbpass);
//新建Excel读取对象
$objReader = PHPExcel_IOFactory::createReader(‘Excel2023’);
//设置为默认格式读取Excel
$objPHPExcel = $objReader->load(“data.xlsx”);
//获取工作表数量
$sheetCount = $objPHPExcel->getSheetCount();
//循环读取工作表
for ($sheetIndex = 0; $sheetIndex
//选择当前工作表
$objPHPExcel->setActiveSheetIndex($sheetIndex);
//获取工作表名称
$sheetName = $objPHPExcel->getActiveSheet()->getTitle();
//获取工作表更大行数和列数
$highestRow = $objPHPExcel->getActiveSheet()->getHighestRow();
$highestColumn = $objPHPExcel->getActiveSheet()->getHighestColumn();
//循环读取工作表每一行数据
for ($rowIndex = 2; $rowIndex
$rowData = array();
//循环读取每个单元格的数据
for ($columnIndex = ‘A’; $columnIndex
$cellValue = $objPHPExcel->getActiveSheet()->getCell($columnIndex.$rowIndex)->getValue();
//根据单元格数据类型格式化数据
$cellValueType = PHPExcel_Cell_DataType::dataTypeForValue($cellValue);
switch ($cellValueType) {
case ‘s’:
$cellValue = trim($cellValue);
break;
case ‘n’:
$cellValue = trim($cellValue);
break;
case ‘b’:
$cellValue = ($cellValue === true) ? ‘1’ : ‘0’;
break;
case ‘e’:
$cellValue = trim($cellValue);
break;
default:
$cellValue = trim($cellValue);
break;
}
$rowData[] = $cellValue;
}
//准备一行数据
$data = array(
$rowData[0],
$rowData[1],
$rowData[2]
);
//预处理SQL语句
$sql = “INSERT INTO `table_name` (`column1`, `column2`, `column3`) VALUES (?, ?, ?)”;
$stmt = $conn->prepare($sql);
//执行SQL语句
$stmt->execute($data);
}
}
“`
结论
在本文中,我们已经学习了如何使用PHP将Excel数据导入到数据库中。我们用PHPExcel库解析了Excel文件,并使用PDO类将数据保存到MySQL数据库中。此例子中的方法不仅适用于MySQL,还可以方便地应用于其他的数据库。希望这篇文章对于Web开发人员提供了一些帮助。