Escoger el fichero Excel para importar la información
Utilizaremos este formulario en HTML, el cual cuenta con un campo input, para que el usuario pueda subir su fichero Excel. Cuando el visitante envíe el formulario, el fichero Excel se enviará al PHP que parseará sus datos. Para validar la extensión del fichero y que no nos la cuelen con otro tipo de archivos, utilizaremos el atributo accept.Como podrás ver, este código también cuenta con el HTML necesario para mostrar el mensaje que nos devolverá el fichero PHP. El mensaje mostrado dependerá de la respuesta de dicho fichero.
<h2>Import Excel File into MySQL Database using PHP</h2>
<div class="outer-container">
<form action="" method="post"
name="frmExcelImport" id="frmExcelImport" enctype="multipart/form-data">
<div>
<label>Choose Excel
File</label> <input type="file" name="file"
id="file" accept=".xls,.xlsx">
<button type="submit" id="submit" name="import"
class="btn-submit">Import</button>
</div>
</form>
</div>
<div id="response" class="<?php if(!empty($type)) { echo $type . " display-block"; } ?>"><?php if(!empty($message)) { echo $message; } ?></div>
<?php
$sqlSelect = "SELECT * FROM tbl_info";
$result = mysqli_query($conn, $sqlSelect);
if (mysqli_num_rows($result) > 0)
{
?>
<table class='tutorial-table'>
<thead>
<tr>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<?php
while ($row = mysqli_fetch_array($result)) {
?>
<tbody>
<tr>
<td><?php echo $row['name']; ?></td>
<td><?php echo $row['description']; ?></td>
</tr>
<?php
}
?>
</tbody>
</table>
<?php } ?>
Importar los datos del Excel a nuestra base de datos
Descarga la librería PHPSpreadSheet en la carpeta vendor de tu aplicación. Incluye la ruta de la librería para acceder a las funciones de PHPSpreadSheet y leer los datos del Excel en un array.En este código PHP, lo primero que hago es verificar una vez más si el archivo que el usuario nos ha enviado es del formato que deseamos. Una vez validada la extensión, parsearemos los datos del fichero mediante las funciones de PHPSpreadSheet. Simplemente lo que haremos es recorrer cada una de las filas del fichero Excel e introducirlas en varias variables para, después, confeccionar la query para introducir la información en la base de datos.
<?php
$conn = mysqli_connect("localhost","root","test","phpsamples");
require_once('vendor/php-excel-reader/excel_reader2.php');
require_once('vendor/SpreadsheetReader.php');
if (isset($_POST["import"]))
{
$allowedFileType = ['application/vnd.ms-excel','text/xls','text/xlsx','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'];
if(in_array($_FILES["file"]["type"],$allowedFileType)){
$targetPath = 'uploads/'.$_FILES['file']['name'];
move_uploaded_file($_FILES['file']['tmp_name'], $targetPath);
$Reader = new SpreadsheetReader($targetPath);
$sheetCount = count($Reader->sheets());
for($i=0;$i<$sheetCount;$i++)
{
$Reader->ChangeSheet($i);
foreach ($Reader as $Row)
{
$name = "";
if(isset($Row[0])) {
$name = mysqli_real_escape_string($conn,$Row[0]);
}
$description = "";
if(isset($Row[1])) {
$description = mysqli_real_escape_string($conn,$Row[1]);
}
if (!empty($name) || !empty($description)) {
$query = "insert into tbl_info(name,description) values('".$name."','".$description."')";
$result = mysqli_query($conn, $query);
if (! empty($result)) {
$type = "success";
$message = "Excel Data Imported into the Database";
} else {
$type = "error";
$message = "Problem in Importing Excel Data";
}
}
}
}
}
else
{
$type = "error";
$message = "Invalid File Type. Upload Excel File.";
}
}
?>
0 Comentarios