PHP导入Excel到数据库(xls&xlsx)
我试图search一些插件来导入Excel文件到MySQL数据库,其中之一是http://code.google.com/p/php-excel-reader/
这个工具非常强大,它将整个excel内容显示到html中。
不过,我想我只需要读取Excel文件并将其内容解压缩到一个数组中,然后编写一个SQL语句以便进入数据库。
会有什么好的代码和包? 谢谢!
有时我需要将大的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); } ?>
如果可以在处理之前将.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; } } ?>