<?php
namespace app\index\controller;
use think\Controller;
class Excel extends Controller{
public function read(){
vendor("PHPExcel");
$excel = 'zworld.xlsx';
//$excelFile = ROOT_PATH.'/public/static/'.$excel;
$excelFile = ROOT_PATH . 'public' . DS . 'static' . DS . $excel;
$filename=iconv('utf-8','gbk',$excelFile);
$fileExt = substr(strrchr($excelFile, '.'),1);
if( ($fileExt != 'xlsx') && ($fileExt != 'xls') ){
exit("请导入excel格式的文件");
}
//引入PHPExcel
//header("content-type:text/html; charset=utf-8");
vendor("PHPExcel.PHPExcel",EXTEND_PATH);
\think\Loader::import('PHPExcel.PHPExcel');
require THINK_PATH.'Library/org/ExcelToArrary.class.php';
//获取文件名
$ExcelToArrary=new \ExcelToArrary();//实例化
$res=$ExcelToArrary->read($excelFile,"UTF-8",$fileExt);
foreach ($res as $k => $v) {
if ($k > 1) {
$data[$k]['First Name'] = $v[1];
$data[$k]['Last Name'] = $v[2];
$data[$k]['email'] = $v[3];
$data[$k]['country_region'] = $v[5];//国家、地区
// $data ['password'] = sha1('111111');
}
}
print_r($data);
}
}
ExcelToArrary.class.php
路径:
thinkphp/library/org/ExcelToArrary.class.php
<?php
/**
* 读取Excel数据
*/
class ExcelToArrary {
public function __construct() {
//这些文件需要下载phpexcel,然后放在vendor文件里面。具体参考上一篇数据导出。
vendor("PHPExcel.PHPExcel.PHPExcel");
vendor("PHPExcel.PHPExcel.Writer.Excel5");
vendor("PHPExcel.PHPExcel.Writer.Excel2007");
vendor("PHPExcel.PHPExcel.IOFactory");
}
public function read($filename,$encode,$file_type){
if(strtolower ( $file_type )=='xls')//判断excel表类型为2003还是2007
{
Vendor("Excel.PHPExcel.Reader.Excel5");
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$objReader = PHPExcel_IOFactory::createReader('Excel5');
}elseif(strtolower ( $file_type )=='xlsx')
{
Vendor("Excel.PHPExcel.Reader.Excel2007");
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
}
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($filename);
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$excelData = array();
for ($row = 1; $row <= $highestRow; $row++) {
for ($col = 0; $col < $highestColumnIndex; $col++) {
$excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
}
}
return $excelData;
}
}