问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

thinkphp怎么用phpexcel导出数据到excel

发布网友 发布时间:2022-04-23 19:55

我来回答

1个回答

热心网友 时间:2022-04-08 00:26

(一)导入Excel

第一,在前台html页面进行上传文件:如:

复制代码 代码如下:

<form method="post" action="php文件" enctype="multipart/form-data">
<h3>导入Excel表:</h3><input type="file" name="file_stu" />

<input type="submit" value="导入" />
</form>

第二,在对应的php文件进行文件的处理

复制代码 代码如下:

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];

$data ['uname'] = $v [3];

$data ['institute'] = $v [4];
$result = M ( 'user' )->add ( $data );
if (! $result)
{
$this->error ( '导入数据库失败' );
}
}
}

}

第三:ExcelToArrary类,用来引用phpExcel并处理Excel数据的

复制代码 代码如下:

class ExcelToArrary extends Service{

public function __construct() {

/*导入phpExcel核心类 注意 :你的路径跟我不一样就不能直接复制*/
include_once('./Excel/PHPExcel.php');
}

/**

* 读取excel $filename 路径文件名 $encode 返回数据的编码 默认为utf8

*以下基本都不要修改

*/

public function read($filename,$encode='utf-8'){

$objReader = PHPExcel_IOFactory::createReader('Excel5');

$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包附在最后。

(二)Excel的导出(相对于导入简单多了)

第一,先查出数据库里面要生成Excel的数据,如:

$data= M('User')->findAll(); //查出数据
$name='Excelfile'; //生成的Excel文件文件名
$res=service('ExcelToArrary')->push($data,$name);

第二,ExcelToArrary类,用来引用phpExcel并处理数据的

复制代码 代码如下:

class ExcelToArrary extends Service{

public function __construct() {

/*导入phpExcel核心类 注意 :你的路径跟我不一样就不能直接复制*/
include_once('./Excel/PHPExcel.php');
}

/* 导出excel函数*/
public function push($data,$name='Excel'){

error_reporting(E_ALL);
date_default_timezone_set('Europe/London');
$objPHPExcel = new PHPExcel();

/*以下是一些设置 ,什么作者 标题啊之类的*/
$objPHPExcel->getProperties()->setCreator("转弯的阳光")
->setLastModifiedBy("转弯的阳光")
->setTitle("数据EXCEL导出")
->setSubject("数据EXCEL导出")
->setDescription("备份数据")
->setKeywords("excel")
->setCategory("result file");
/*以下就是对处理Excel里的数据, 横着取数据,主要是这一步,其他基本都不要改*/
foreach($data as $k => $v){

$num=$k+1;
$objPHPExcel->setActiveSheetIndex(0)

//Excel的第A列,uid是你查出数组的键值,下面以此类推
->setCellValue('A'.$num, $v['uid'])
->setCellValue('B'.$num, $v['email'])
->setCellValue('C'.$num, $v['password'])
}

$objPHPExcel->getActiveSheet()->setTitle('User');
$objPHPExcel->setActiveSheetIndex(0);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$name.'.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}

第三,以上就是导出的全部内容,phpExcel包附在最后。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我的世界手游 我的世界手机上的基岩版登录后为什么不能联机? 我的世界为什么联机进不去 联机我的世界方法 聚四氟乙烯生料带价格是多少 如何选购聚四氟乙烯带 聚四氟乙烯多少钱 路由器的用户名和密码天翼宽带zxhnf420 我想用无线上网,电信送的猫是zxhn f420,我买了个路由器是WNR500的型号... 我买的保险十年的交完了退保能退多少钱 平安你险买一年三千五买了一年想退出退回多少钱? 我买的是人寿保险交了一年想退保能退多少钱? 魔兽冰封王座的暗夜怎样灭一个简单的? ci框架phpexcel为什么我的类型是html PHPExcel 支持html php如何实现将一个页面以excel格式保存,需要的时候能在转化成页面形式显... PHP XLS转换HTML 考研英语考试题型都有哪些? 考研英语一考试题型和分值 考研英语一各个题型分别占多少分 硕士研究生学位英语考试怎么考 研究生英语考试题型是什么 硕士英语内容是什么? 考研 英语有哪些题型 一共多少分 三星s7卡顿怎么解决 手机负荷大就容易变卡 考研英语都有什么题型?都各占多少分? iPad型号MPGT2CH/A是ipad几? s7有什么特殊功能 英语一考研题型有哪些? 三星s7卡顿怎么解决? 研究生学位英语考试是学校出题吗?每年什么时候考的呀?有什么题型呢? 同等学力申请硕士学位英语考试 题型有哪些 三星S7国行什么处理器 三星S7国行处理器介绍 想用PHP导出excel表格,但是php环境是5.1.*的,没办法用PHPExcel... phpexcel导出时报错,经过确认代码应该正确,但是排查数据不知道哪里出了问题 phpexcel怎么设置单元格为文本格式 PHPExcel如何设置上标、下标?就是html中的&lt;sub&gt;和&lt;sup&gt;. .xsl文件导入到mysql数据库 PHP+HTML 求教“php怎么把html页面导入到word” php怎么样把xls转换成csv 关于phpexcel读取excel表的问题,如下 一个骨,一个骇的右边和在一起怎么读 “精心”的近义词是什么? 精心近义词有哪些? 泽被后世,针砭时弊,摈除,差强人意,命运多舛,长歌当哭,安步当车,藏污纳后,骇人听闻,大笔如掾的拼音和解释 精心的近义词是什么 凯、蒂、薄、驳、骇、某组词 精心的近义词是什么? 鸡什么骇什么的成语 精心的近义词是什么哦哦 浦原喜助什么时候给的朽木露琪亚义骸 死神浦原喜助什么时候给的朽木露琪亚义骇 精心的近义词是什么呢∞ 它日,驴一鸣,虎大骇,远遁,以为且他日,驴一鸣,虎大骇,远遁;以为且噬已也,甚恐。然往来视之,觉无异