通过网站将Excel工作表数据上传到SQL数据库中


Uploading Excel sheet data into SQL database via a website

我正在使用php开发我的网站,我需要能够浏览并上传Excel工作表。然后,我需要将信息存储在SQL数据库中。

我意识到这是一个相对开放的问题,但我一直在寻找如何做到这一点的信息,但还没有走多远。将数据存储在SQL数据库中是可以的,但我不确定如何上传电子表格,以便网站可以读取。

如果有人能为我指明正确的方向,我将不胜感激。

这个问题包含很多主题,我将尝试简短总结一下为了解决您手头的问题需要处理的内容。

(1)文件上传

首先,你必须让上传可用。基本上,您至少有两个组件。

  1. HTML表单
  2. 使用该文件的一些(php)代码

HTML代码示例:

<form action="your_upload_script.php" method="post" enctype="multipart/form-data">
    Your XLS file: <input type="file" name="xlsfile" size="50" />
    <input type="submit" name="submit" value="Submit" />
</form>

这里可以找到一个简单但坚实的php代码示例。

请记住,上传文件可能会有更多的问题,体育规定的上传大小等等。

(2)分析Excel文件

现在你的文件已经上传了,你必须对它进行解析。我建议使用PHPExcel,它是一个。。。

为PHP编程提供一组类的项目语言,允许你向不同的人写信和阅读电子表格文件格式,如Excel(BIFF).xls、Excel 2007(OfficeOpenXML).xlsx,CSV,Libre/OpenOffice Calc.ods,Gnumeric,PDF,HTML。。。

(3)将值存储在表中

在解析电子表格时或之后,您最终必须将其存储在表中。无论你做什么,请不要在php中使用旧的mysql连接器,因为这个连接器已经过时了。请改用mysqli或PDO。

再说一遍,这只是一个短篇故事。你最终会遇到更多的挑战和问题。

您可以将文件导出为CSV,上传并使用fgetcsv()进行解析。来自PHP手册:

$row = 1;
if (($fh = fopen("excel.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
        $num = count($data);
        $row++;
        for ($c=0; $c < $num; $c++) {
            //make query and insert into database
        }
    }
    fclose($handle);
}

您可以使用PHPExcel读取上传的excel文件

http://phpexcel.codeplex.com/

下载链接:https://github.com/PHPOffice/PHPExcel

首先,Excel文件必须是CSV格式,否则在数据库中插入数据会困难得多(例如,您必须使用PhpExcel进行解析)。

如果您的Excel文件是CSV,那么您必须使用LOAD DATA INFILE。

您可以在此处看到一个示例:https://stackoverflow.com/a/10897669/1788704