PHP导入Excel到数据库(xls&xlsx)

我试图search一些插件来导入Excel文件到MySQL数据库,其中之一是http://code.google.com/p/php-excel-reader/

这个工具非常强大,它将整个excel内容显示到html中。

不过,我想我只需要读取Excel文件并将其内容解压缩到一个数组中,然后编写一个SQL语句以便进入数据库。

会有什么好的代码和包? 谢谢!

这是最好的插件与适当的文件和例子

https://github.com/PHPOffice/PHPExcel

加点:你可以在论坛上寻求帮助,一天之内你会得到作者本人的回应,真是令人印象深刻。

有时我需要将大的xlsx文件导入到数据库中,所以我使用spreadsheet-reader因为它可以按行读取文件。 这是非常有效的内存导入方式。

 <?php // If you need to parse XLS files, include php-excel-reader require('php-excel-reader/excel_reader2.php'); require('SpreadsheetReader.php'); $Reader = new SpreadsheetReader('example.xlsx'); // insert every row just after reading it foreach ($Reader as $row) { $db->insert($row); } ?> 

https://github.com/nuovo/spreadsheet-reader

如果可以在处理之前将.xls转换为.csv,则可以使用下面的查询将csv导入数据库:

 load data local infile 'FILE.CSV' into table TABLENAME fields terminated by ',' enclosed by '"' lines terminated by '\n' (FIELD1,FIELD2,FIELD3) 

如果将excel文件保存为CSV文件,则可以使用PHPMyAdmin等工具将其导入到mysql数据库中

林不知道这是否会帮助你的情况,但手动或编程方式的csv文件将更容易parsing到一个数据库比我会想到的Excel文件。

编辑:但是我会build议看看其他答案,而不是我的,因为@diEcho答案似乎更合适。

我写了一个inheritance的类:

 <?php class ExcelReader extends Spreadsheet_Excel_Reader { function GetInArray($sheet=0) { $result = array(); for($row=1; $row<=$this->rowcount($sheet); $row++) { for($col=1;$col<=$this->colcount($sheet);$col++) { if(!$this->sheets[$sheet]['cellsInfo'][$row][$col]['dontprint']) { $val = $this->val($row,$col,$sheet); $result[$row][$col] = $val; } } } return $result; } } ?>