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开发人员提供了一些帮助。


数据运维技术 » php导入excel数据入库 (php从excel导入数据库数据)