ThinkPHP如何导入Excel表中的内容介绍及注意事项
导入前的准备:
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]; } //开源软件:phpfensi.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
查看更多关于ThinkPHP如何导入Excel表中的内容介绍及注意事项的详细内容...