今天的项目需要一个导入excel文件到mysql的功能!
折腾了很久,去网上也找到一大堆的帖子!
实现方式有几种:
1、使用扩展类库对excel文件进行操作!如:PHPExcel类包、phpexcelreader类文件(比较小巧,不需要复杂的操作时,推荐)
2、对excel文件另保存为csv文件,一种以逗号分隔值为形式的文件。
这里,实际的需要,只是导入excel数据,所以采用phpexcelreader进行操作!
为什么不用csv的形式,毕竟对于客户来说,还要对excel文件再另存为csv格式,对客户来说有些麻烦!
没办法,客户是上帝!
下面就贴出使用phpexcelreader实例!
下载地址:http://sourceforge.net/projects/phpexcelreader/
拿到下载包中的oleread.inc 、 reader.php这两个文件,其他的文件是说明和使用实例!
打开reader.php文件,在31行左右
//require_once 'PEAR.php';
require_once 'Spreadsheet/Excel/Reader/OLERead.php';
//require_once 'OLE.php';
修改为
//require_once 'PEAR.php';
require_once 'oleread.inc';
//require_once 'OLE.php';
注:PHP-ExcelReader是一个读取Excel xsl文件内容的一个PHP类.它需要OLE包支持,但不需要运行在Windows平台上.您能从这里获取到OLE包. 从2i版开始,oleread.inc文件包含在PHP ExcelReader发行包中,所以不再需要包含OLE包了. 安装下载包含多个文件,只有2个,reader.php和oleread.inc,是运行ExcelReader必须的,其它文件是一个应用例子,自述文件等. 运行所有必需的是在项目中包含类文件(reader.php).接着包含oleread.inc.
下面贴出部分代码:
require_once '/excel/reader.php';$data = new Spreadsheet_Excel_Reader();$data->setOutputEncoding('utf-8'); //输出编码$data->read($uploadfile_xls); //读取缓存中的xls文件error_reporting(E_ALL ^ E_NOTICE); //保存等级设置$data_list = array();$fields = $data->sheets[0]['cells'][1];$fields = array_map("trim", $fields); //去除值的空白符
/* 打印数据
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
echo "\"".$data->sheets[0]['cells'][$i][$j]."\",";
}
echo "\n";
}
//print_r($data);
*/
for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) {for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {$data_list[$i][] = $data->sheets[0]['cells'][$i][$j];}$data_list[$i] = array_map("trim", $data_list[$i]); //去除值的空白符$data_list[$i] = array_combine($fields, $data_list[$i]);}
var_dump($data_list);
如上,我们就获取到了我们想要的数据格式了!excel数据完美保存!