导入前的准备:
1.下载phpexcel类,网址:http://phpexcel.codeplex.com/releases/view/26478
找到相应的文件下载,如下载好了如 PHPExcel_1.8.0_odt.zip,解压之后会看到里面有三个文件夹和三个.txt文件,但是只需要Classes文件就可以了,然后将Classes文件放入目录ThinkPHP/Extend/Vendor/里面.
2.创建一个ExcelToArrary类,命名ExcelToArrary.class.php,注意了,这个类是要放在目录Thinkphp/Extend/Library/ORG/Util里面,如果这里目录里已经有这个类的话就不用创建了,然后在你自己简历的导入模块里面如ExcelAtion.class.php引入它.
- public function __construct()
- {
- import('ORG.Util.ExcelToArrary');//导入excelToArray类
- }
具体先参考 http://blog.csdn.net/sui13725202/article/details/9285501
根据参考注意几点:
1)、参考里面设置的上传路径为
$savePath = C( './Public/Uploads/');
我在实践的时候,这种路径会出错,不是上次到你想要的文件,只上传到项目的根目录里面而已,后来我改为下面的形式就可以了.
$savePath = './Public/Uploads/';
2)、foreach循环添加数据的时候,一定要注意添加的字段的顺序必须要和数据库表里的相同,而且字段名称也要对应相同,否则会出错.
3)、里面的 tmp_name是个路径来的m不是变量 ,
4)、我并不是按照参考那里导进去的m在循环和添加那里我进行了修改:
- foreach ( $res as $k => $v ) //循环excel表
- {
- //$k=$k-1;//addAll方法要求数组必须有0索引
- // $data[$k]['id'] = $v [0];//创建二维数组 -------id 可以自增
- $data[$k]['c_id'] = $v [0];
- $data[$k]['number'] = $v [1];
- $data[$k]['name'] = $v [2];
- $data[$k]['stu_no'] = $v [3];
- $data[$k]['xibie'] = $v [4];
- $data[$k]['class'] = $v [5];
- $data[$k]['subject'] = $v [6];
- } //开源软件:Vevb.com
- $stu = M('Student');
- foreach($data as $k=>$v) { //******解决办法:要用foreach循环来一条一条数据地添加
- $result = $stu -> add($v); //******另外的方法就是修改addAll方法
- }
5)、有时候需要在导入之前删除excel表的头一行或两行,这时候需要在第一个foreach循环之前,加上一个语句,进行删除:
array_shift($res); //删除头部文件,有多少行这个,就删除多少行头部文件
array_shift($res); //删除第二行
6)、如果你觉得数据导进去之后不需要这个excel文件了,可以删除它,在确认添加完之后可以用unlink语句进行删除.
unlink($savePath . $file_name); //用unlink函数删除导入的文件
7)、准备完之后注意:在php.ini里面把;extension=php_zip.dll前面的分号去掉。
相信弄好这些后,导入excel表的数据是没问题的了.
3.总结:数据导入,格式很严格,总共用到三个文件:
index.html,ExcelAction.class.php,ExcelToArrary.class.php
新闻热点
疑难解答
图片精选