很久以前,有一类叫做PHPExcel(官方网站)可以用来操作Excel,一直没有机会尝试的今天,试验发现很强大,里面有详细的文档下载后的源代码包,几乎所有的功能,可以实现手动操作来实现Excel。
一个简单阅读excel的例子如下:
复制代码代码如下所示:
inputfiletype美元= 'excel2007;
inputfilename美元= '。 / / /公共文件import_user_template xlsx;
sheetname美元= 'sheet1;
指定 Excel类型,创建一个阅读器
objreader美元= phpexcel_iofactory::createreader($ inputfiletype);
设置只读数据,公式和格式不包括
objreader美元-> setreaddataonly(真的);
/只读取指定的表
objreader -> setloadsheetsonly美元(美元sheetname);
objphpexcel美元=美元objreader ->负荷($ inputfilename);
cursheet美元=美元objphpexcel -> getsheet(0);
包含最大数据列。
allcolumn美元=美元cursheet -> gethighestcolumn();
包含最大数据
allrow美元=美元cursheet -> gethighestrow();
为($ currentrow = 1;美元美元美元currentrow << allrow;currentrow ++){
为($ currentcol = a;currentcol美元美元美元的<< allcolumn;currentcol ++){
echo $ cursheet -> getcell(currentcol美元。美元currentrow)-> getValue()。;
}
;
}

在ThinkPHP使用,复制类目录的源包ThinkPHP供应商目录,重命名为PHPExcel,然后调用供应商的方法来加载
复制代码代码如下所示:
供应商('phpexcel。PHPExcel);

但由于在阅读Excel调用M或D方法实例化模型类到类模型时发现错误,之后的研究是自动加载机制发现冲突,解决冲突,需要调用M或D法新注册的自动装弹机在使用前spl_autoload_register功能
复制代码代码如下所示:
spl_autoload_register(阵列('think ','autoload '));

一个在ThinkPHP PHPExcel解决问题的要求
当PHPExcel在ThinkPHP称,数据完全可以读出来,但下一步的D,M,或者叫模板会出错。(我不知道如果我一个人遇到这个问题呢)
经过研究,终于找到了解决方案。与你分享。哈哈 uff01
1、首先下载PHPExcel包放在ThinkPHP / /供应商(即第三方类库目录的思考)。
2,调用函数。
复制代码代码如下所示:
保护功能import_execl(文件){
如果(!file_exists(文件)){
返回数组(错误> = > 1);
}
供应商(PHPExcel。PHPExcel );
PHPExcel美元=新PHPExcel();
phpreader美元=新phpexcel_reader_excel2007();
如果(!phpreader美元->阅读(文件)){
phpreader美元=新phpexcel_reader_excel5();
如果(!phpreader美元->阅读(文件)){
返回数组(错误> = > 2);
}
}
美元美元phpreader -> PHPExcel =负载(文件);
sheetcount =美元美元PHPExcel -> getsheetcount();
为($我= 0;美元美元美元我<< sheetcount;i++){
电流片=美元美元PHPExcel -> getsheet(合一);
allcolumn美元=美元-> excelchange($电流片-> gethighestcolumn());
allrow美元=美元-> gethighestrow电流片();
{我} {数组$ 标题} = $()和电流片->;
{我} {数组$ 列= allcolumn美元;
{我} {数组$ 行= allrow美元;
ARR =阵列(美元);
为($ currentrow = 1;< = currentrow美元美元美元allrow;currentrow ++){
行=数组();
为($ currentcolumn = 0;美元美元美元currentcolumn << allcolumn;currentcolumn ++){
{ } =行currentcolumn美元美元美元-> getcellbycolumnandrow电流片(currentcolumn美元,美元currentrow)-> getValue();
}
{ } = currentrow ARR美元美元美元排;
}
{我} {数组$ 内容= $ ARR;
}
spl_autoload_register(阵列('think ','autoload ')); / /必须,或者ThinkPHP,PHPExcel冲突
unset($电流片);
unset($ phpreader);
unset($ PHPExcel);
unlink(文件);
返回数组(错误= 0,数据= $数组);
}
保护功能ExcelChange($str){ / /批量导入功能较好
$ len = strlen(str)- 1;
$ = 0;
对于($ i = $;;$ i = 0;$ i){
为民=(ORD($str {我})- 64)*战俘(26,美元美元Len -我);
}
返回$;
}

3,呼叫。
复制代码代码如下所示:
公共函数导入(){
如果(isset($ _files {进口($ _files {)导入
结果=美元美元-> import_execl($ _files {导入
如果(美元-> execl_error { $结果{错误= = 0){
结果execl_data美元美元{ =数据} { 0 } {内容};
unset($ execl_data { 1 });
$ = d(数据);
foreach(execl_data美元美元美元K = > v){
$ {serial_no= $ V { 0 };
$ {check_no= $ V { 1 };
$ {work_no= $ V { 2 };
$ {class_name= $ V { 3 };
$ {user_name= $ V { 4 };
$ {new_class= $ V { 5 };
$ {error_level= $ V { 6 };
$数据>;
}
美元->成功(美元-> execl_error { $结果{错误);
其他{ }
美元->误差(美元-> execl_error { $结果{错误);
}
其他{ }
此错误(上传文件失败);
}
}

4、错误数据:
复制代码代码如下所示:
保护execl_error美元=阵列(数据导入成功