关于PHPExcel的导入导出

把对应的包放在vendor下面,注意file_stui是你前端的name值,k和v是数据库的字段名,kv是表名。其他的看注解吧。ThinkPHP版本是3.2.3
//导入excel
public function lst()
{
/*
判断是否有文件过来 file_stu是表单中对应的name值
*/
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" && strtolower($file_type) != "xlsx") {
$this->error('不是Excel文件,重新上传');
}
/*这里是用了ThinkPHP3.2.3的上传类*/
$config = array(
'exts' => array('xlsx', 'xls'),
'maxSize' => 3145728000,
'rootPath' => "./Public/", //上传的主目录
'savePath' => 'Uploads/', //上传的子目录
'subName' => array('date', 'Ymd'), //子子目录
);
$upload = new \Think\Upload($config);
//这面这一句是设置上传的文件名 pathinfo函数也可以了解一下
// $upload ->saveName = $file_types [count ( $file_types ) - 2];
if (!$info = $upload->upload()) {
$this->error($upload->getError());
}
if (!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
} else {// 上传成功
// $this->success('上传成功!');
}
/*
这里引入PHPExcel类
*/
vendor("PHPExcel.PHPExcel");
/*
获取文件地址
*/
$file_name = $upload->rootPath . $info['file_stu']['savepath'] . $info['file_stu']['savename'];
$extension = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
//判断导入表格后缀格式 采用不同的加载方式
if ($extension == 'xlsx') {
$objReader = \PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($file_name, $encode = 'utf-8');
} else if ($extension == 'xls') {
$objReader = \PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel = $objReader->load($file_name, $encode = 'utf-8');
}
/*
获取Excel的内容
*/
$sheet = $objPHPExcel->getSheet(0);
$row = $sheet->getHighestRow();//取得总行数
$column = $sheet->getHighestColumn(); //取得总列数
一般你的逻辑操作这里更改           
//前面小写的k是表中的字段名,后面的大写A是excel中位置
一般你的逻辑操作这里更改
//前面小写的k是表中的字段名,后面的大写A是excel中位置
$data['k'] = $objPHPExcel->getActiveSheet()->getCell("A" . $i)->getValue();
$data['v'] = $objPHPExcel->getActiveSheet()->getCell("B" . $i)->getValue();
//kv是数据库中的表
$add = M('kv')->add($data);
}
}
}
//导出excel
public function exportExcel()
{
vendor('PHPExcel.PHPExcel');
$objPHPExcel = new \PHPExcel(); //这里要注意‘\’ 要有这个。因为版本是3.1.2了。
$objDrawing = new \PHPExcel_Worksheet_Drawing();
$objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); //设置保存版本格式
//接下来就是写数据到表格里面去 一般你
$user = M('kv');
$list = $user->order('id desc')->select();
foreach ($list as $key => $value) {
$i = $key + 1;//表格是从1开始的
$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $value['k']);
//这里是设置A1单元格的内容
$objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $value['v']);
////这里是设置B1单元格的内容
}
//接下来当然是下载这个表格了,在浏览器输出就好了
ob_end_clean();//清除缓冲区,避免乱码 还有一个导出报错的是版本低的问题,可以删掉对应那行的break即可
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");;
header('Content-Disposition:attachment;filename=' . date('YmdHis') . '.xls');
header("Content-Transfer-Encoding:binary");
header("Content-type:application/vnd.ms-excel");
$objWriter->save(date('YmdHis') . '.xls');
$objWriter->save('php://output');
}
展开阅读全文

没有更多推荐了,返回首页