首先下载一个phpexcle,将其解压讲文件夹放在THinkPHP/Library/Vendor/Phpexcle 下,因为有命名空间的存在,在引用扩展类的时候一定要记得加 \
import("Org.Util.PHPExcel");
//要导入的xls文件,位于根目录下的Public文件夹
$filename="./Public/1.xlsx";
//创建PHPExcel对象,注意,不能少了\
$PHPExcel=new \PHPExcel();
//如果excel文件后缀名为.xls,导入这个类
// import("Org.Util.PHPExcel.Reader.Excel5");
//如果excel文件后缀名为.xlsx,导入这下类
import("Org.Util.PHPExcel.Reader.Excel2007");
$PHPReader=new \PHPExcel_Reader_Excel2007();
//要导入的xls文件,位于根目录下的Public文件夹
$filename="./Public/1.xlsx";
//创建PHPExcel对象,注意,不能少了\
$PHPExcel=new \PHPExcel();
//如果excel文件后缀名为.xls,导入这个类
// import("Org.Util.PHPExcel.Reader.Excel5");
//如果excel文件后缀名为.xlsx,导入这下类
import("Org.Util.PHPExcel.Reader.Excel2007");
$PHPReader=new \PHPExcel_Reader_Excel2007();
// $PHPReader=new \PHPExcel_Reader_Excel5();
//载入文件
$PHPExcel=$PHPReader->load($filename);
//获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
$currentSheet=$PHPExcel->getSheet(0);
//获取总列数
$allColumn=$currentSheet->getHighestColumn();
//获取总行数
$allRow=$currentSheet->getHighestRow();
//循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始
for($currentRow=1;$currentRow<=$allRow;$currentRow++){
//从哪列开始,A表示第一列
for($currentColumn='A';$currentColumn<=$allColumn;$currentColumn++){
//数据坐标
$address=$currentColumn.$currentRow;
//读取到的数据,保存到数组$arr中
$arr[$currentRow][$currentColumn]=$currentSheet->getCell($address)->getValue();
}
//载入文件
$PHPExcel=$PHPReader->load($filename);
//获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
$currentSheet=$PHPExcel->getSheet(0);
//获取总列数
$allColumn=$currentSheet->getHighestColumn();
//获取总行数
$allRow=$currentSheet->getHighestRow();
//循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始
for($currentRow=1;$currentRow<=$allRow;$currentRow++){
//从哪列开始,A表示第一列
for($currentColumn='A';$currentColumn<=$allColumn;$currentColumn++){
//数据坐标
$address=$currentColumn.$currentRow;
//读取到的数据,保存到数组$arr中
$arr[$currentRow][$currentColumn]=$currentSheet->getCell($address)->getValue();
}
}
dump($arr);
dump($arr);
这段代码为讲在public下的1.xlsx excle表中的数据读取出来,并且存入到数组$arr中,有了数组我们就可以进行一些详细的操作。
数据导入excle表,一般会出现的问题为打印乱码,首先要保证的是在excle输出前,没有其他打印信息。检查头部header("Content-Typ:text/html;charset=utf-8");是否有写,如果还未生效,则在
header('Content-Type:application/vnd.ms-excel');
header('Content-Disposition:attachment;filename="Stock.xls"');
header('Cache-Control: max-age=0');
header('Content-Disposition:attachment;filename="Stock.xls"');
header('Cache-Control: max-age=0');
输出前添加 ob_end_clean();//清除缓冲区,避免乱码,具体的phpexcle格式文档可详细参考http://www.cnblogs.com/freespider/p/3284828.html。记得加 \ ,路径配置对,问题不大。