将Excel文件上传到数据库

时间:2017-10-09 01:40:19

标签: php mysql

我在想,因为我可以将数据从excel导入我的数据库,是否可以上传excel文件本身并能够在您的网站上显示它?

1 个答案:

答案 0 :(得分:0)

对于客户端网页方面,使用html表单<input type="file">将excel文件从浏览器上传到PHP文件。

示例upload-submit.html:

<form action="upload.php">
    <input type="file" name="excel-upload" />
    <input type="submit" />
</form>

在PHP上传脚本中,您需要包含PHPExcel库(https://github.com/PHPOffice/PHPExcel)以读取和解析上载的Excel文件。您可以阅读Mark Ba​​ker关于如何从Excel读取并插入数据库的非常好的示例:how to use phpexcel to read data and insert into database?

示例upload.php:

//  Include PHPExcel_IOFactory
include 'PHPExcel/IOFactory.php';

// Move the uploaded file from temporary server directory into an 'uploads' directory
$fileName = basename($_FILES["excel-upload"]["name"]);
$uploadedExcelFullPath =  __DIR__.'/uploads/'.$fileName;
move_uploaded_file($_FILES['excel-upload']['tmp_name'],$uploadedExcelFullPath);


//  Read your Excel workbook
try {
    $inputFileType = PHPExcel_IOFactory::identify($uploadedExcelFullPath);
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcel = $objReader->load($uploadedExcelFullPath);
} catch(Exception $e) {
    die('Error loading file "'.pathinfo($uploadedExcelFullPath,PATHINFO_BASENAME).'": '.$e->getMessage());
}

//  Get worksheet dimensions
$sheet = $objPHPExcel->getSheet(0); 
$highestRow = $sheet->getHighestRow(); 
$highestColumn = $sheet->getHighestColumn();

//  Loop through each row of the worksheet in turn
for ($row = 1; $row <= $highestRow; $row++){ 
    //  Read a row of data into an array
    $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,
                                    NULL,
                                    TRUE,
                                    FALSE);

    //  Insert row data array into your database here

    // You can also format data into HTML table row format and echo out here
    var_dump($rowData);
}