【步骤1】在前台html页面进行上传文件
form?method="post"?action="php文件"?enctype="multipart/form-data"?
input?type="submit"?value="导入"?/
/form
if?(!?empty?(?$_FILES?['file_stu']?['name']?))
{?$tmp_file?=?$_FILES?['file_stu']?['tmp_name'];?$file_types?=?explode?(?".",?$_FILES?['file_stu']?['name']?);?$file_type?=?$file_types?[count?(?$file_types?)?-?1];
/*判别是不是.xls文件,判别是不是excel文件*/??if?(strtolower?(?$file_type?)?!=?"xls")???{??$this-error?(?'不是Excel文件,重新上传'?);??}
/*设置上传路径*/??$savePath?=?SITE_PATH?.?'/public/upfile/Excel/';
/*以时间来命名上传的文件*/??$str?=?date?(?'Ymdhis'?);?$file_name?=?$str?.?"."?.?$file_type;
/*是否上传成功*/??if?(!?copy?(?$tmp_file,?$savePath?.?$file_name?))??{??$this-error?(?'上传失败'?);?}
/*
*对上传的Excel数据进行处理生成编程数据,这个函数会在下面第三步的ExcelToArray类中
注意:这里调用执行了第三步类里面的read函数,把Excel转化为数组并返回给$res,再进行数据库写入
*/?$res?=?Service?(?'ExcelToArray'?)-read?(?$savePath?.?$file_name?);
重要代码 解决Thinkphp M、D方法不能调用的问题
如果在thinkphp中遇到M 、D方法失效时就加入下面一句代码
*/
//spl_autoload_register?(?array?('Think',?'autoload'?)?);
/*对生成的数组进行数据库的写入*/
foreach?(?$res?as?$k?=?$v?)?{??if?($k?!=?0)??{???$data?['uid']?=?$v?[0];???$data?['password']?=?sha1?(?'111111'?);???$data?['email']?=?$v?[1];
}
class?ExcelToArrary?extends?Service{
public?function?__construct()?{
/*导入phpExcel核心类?注意?:你的路径跟我不一样就不能直接复制*/??include_once('./Excel/PHPExcel.php');?}
/**
*以下基本都不要修改
$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;
PHPExcel
PHP读取示例代码
//获取上传的excel临时文件
$path?=?$_FILES["file"]["tmp_name"];
//将临时文件移动当前目录,可自定义存储位置
move_uploaded_file($_FILES["file"]["tmp_name"],$_FILES["file"]["name"]);
//将获取在服务器中的Excel文件,此处为上传文件名
$path?=?$_FILES["file"]["name"];
//调用readExcel函数返回一个
二维数组
$exceArray?=?readExcel($path);
//创建一个读取
excel函数
function?readExcel($path){
//引入PHPExcel类库
include?'Classes/PHPExcel.php';??
include?'Classes/PHPExcel/IOFactory.php';
$xlsReader?=?\PHPExcel_IOFactory::createReader($type);?
$xlsReader-setReadDataOnly(true);
$xlsReader-setLoadSheetsOnly(true);
$Sheets?=?$xlsReader-load($path);
//开始读取上传到服务器中的Excel文件,返回一个
$dataArray?=?$Sheets-getSheet(0)-
toArray();
return?$dataArray;
第一个是PHPExcelReader,另外一个是PHPExcel.
$objReader = PHPExcel_IOFactory::createReaderForFile($filename);
$objPHPExcel = $objReader-load($filename);
$objPHPExcel-setActiveSheetIndex(1);
输出$date变量就能够看到文件中的内容了.PHPExcel使用PHPExcel_IOFactory这个类来自动匹配所上传的文件类型,当然我们也可以自己制定要解析的文件类型.之后通过load方法,将PHP文件加载到objPHPExcel对象中.如果Excel文件有多个Sheet,可以通过setActiveSheetIndex来设置当前活动的Sheet.如何通过Sheet名来获得当前Sheet我还不知道,如果有知道的可以站内我.
需要注意的是,对于Excel中的日期格式,PHPExcel读出来的是不是日期类型,需要我们使用以下方法来进行日期类型转换.
echo date("Y-m-d H:i:s",PHPExcel_Shared_Date::ExcelToPHP($date));
下面的代码显示了如何遍历显示Excel的内容:
①. table id="table_id"
①.0 $cellIterator-setIterateOnlyExistingCells(false);
①.1
告诉你一个思路,
简单归纳如下三个部分即可实现 .
////存储的部分
if($_FILE[文件名])
{
$destFilename=指定目录/文件名;
copy($_FILE[文件名],$destFilename);
//php读出部分,
这里可以有多个.如果是图片文件的,可以直接使用HTML的IMG src=相对URI图片路径标记
//如果是其它如WORD/EXCEL/PDF这类的.你就要用一个IFRAME src=文件 高/宽设定
//////////上传的部分
form method="POST"
input type=file name=文件变量
input type=submit
以上就是土嘎嘎小编为大家整理的php上传解析excel相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!