重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
下面是我写的一个PHP导出数据到CSV问价的函数,你到时候直接调用就行了
创新互联公司于2013年成立,是专业互联网技术服务公司,拥有项目成都网站建设、网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元三台做网站,已为上家服务,为三台各地企业和个人服务,联系电话:028-86922220
/**
* 导出CSV文件
* @param string $fileName 文件名字
* @param string|array $data 导出数据,csv格式的字符串|数值数组
* @param string $to_encoding 目标转换编码
* @param string $from_encoding 当前编码
*/
function exportCSV($fileName = '', $data = '', $to_encoding = 'gb2312', $from_encoding = 'utf-8') {
$fileName = empty($fileName) ? date('YmdHis') : $fileName;
// 文件标签
Header("Content-type: application/octet-stream");
header("Content-type: application/vnd.ms-excel; charset=$from_encoding");
Header("Content-Disposition: attachment; filename=$fileName.csv");
$str = '';
if($data) {
if(is_array($data)) {
foreach ($data as $v) {
if(is_array($v)) {
foreach ($v as $vo) {
$str .= (is_numeric($vo) ? "'".$vo : $vo."").",";
}
$str = trim($str, ",")."\r\n";
} else {
$str .= (is_numeric($v) ? "'".$v : $v).",";
}
}
$str = trim($str, ",")."\r\n";
} else {
$str = $data;
}
}
echo mb_convert_encoding($str, "gb2312", "utf-8");
exit;
}
$data = new Spreadsheet_Excel_Reader();//实例化
02 $data-setOutputEncoding('utf-8');//设置读取编码
03 $data-read($p);//$p就是excel文件路径
04
05 for ($i = 2; $i = $data-sheets[0]['numRows']; $i++) {
06 //传如数组,将一行信息写入数据库;
07 $arr = $data-sheets[0]['cells'][$i];
08 if($arr){
09 $r = addUserLine($arr,$posts['bid']);
10 if($r){
11 echo "楼栋:".$r['bldgname']." 房间:".$r['roomname']." 学员:".$r['name']." 学号:".$r['sid']." 导入成功br /hr /";
12 }else{
13 echo "br /hr /";
14 }
15 }
16 }
thinkphp3.2和phpexcel导入最基本用法
先整个最基础的代码,理解了这个,后面的就非常简单了
$file_name= './Upload/excel/123456.xls';
import("Org.Util.PHPExcel");
import("Org.Util.PHPExcel.IOFactory");
$objReader = \PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel = $objReader-load($file_name,$encode='utf-8');
$sheet = $objPHPExcel-getSheet(0);
$highestRow = $sheet-getHighestRow(); // 取得总行数
$highestColumn = $sheet-getHighestColumn(); // 取得总列数
$s = $objPHPExcel-getActiveSheet()-getCell("A2")-getValue();
表格内容:
再给大家整个一点难度的,先说下思路。
1.上传excel文件,得到它的地址
2.写个处理exl的function,即可
实例代码演示:
public function upload(){
$files = $_FILES['exl'];
// exl格式,否则重新上传
if($files['type'] !='application/vnd.ms-excel'){
$this-error('不是Excel文件,请重新上传');
}
// 上传
$upload = new \Think\Upload();// 实例化上传类
$upload-maxSize = 3145728 ;// 设置附件上传大小
$upload-exts = array('xls');// 设置附件上传类型
$upload-rootPath = './Upload/'; // 设置附件上传根目录
$upload-savePath = 'excel/'; // 设置附件上传(子)目录
//$upload-subName = array('date', 'Ym');
$upload-subName = '';
// 上传文件
$info = $upload-upload();
$file_name = $upload-rootPath.$info['exl']['savepath'].$info['exl']['savename'];
$exl = $this-import_exl($file_name);
// 去掉第exl表格中第一行
unset($exl[0]);
// 清理空数组
foreach($exl as $k=$v){
if(empty($v)){
unset($exl[$k]);
}
};
// 重新排序
sort($exl);
$count = count($exl);
// 检测表格导入成功后,是否有数据生成
if($count1){
$this-error('未检测到有效数据');
}
// 开始组合数据
foreach($exl as $k=$v){
$goods[$k]['goods_sn'] = $v;
// 查询数据库
$where['goods_sn'] = array('like','%'.$v.'%');
$res = M('goods')-where($where)-find();
$goods[$k]['goods_name'] = $res['goods_name'];
$goods[$k]['goods_thumb'] = $res['goods_thumb'];
if($res){
// 是否匹配成功
$goods[$k]['is_match'] = '1';
$f += 1;
}else{
// 匹配失败
$goods[$k]['is_match'] = '0';
$w += 1;
}
}
// 实例化数据
$this-assign('goods',$goods);
//print_r($f);
// 统计结果
$total['count'] = $count;
$total['success'] = $f;
$total['error'] = $w;
$this-assign('total',$total);
// 删除Excel文件
unlink($file_name);
$this-display('info');
}
/* 处理上传exl数据
* $file_name 文件路径
*/
public function import_exl($file_name){
//$file_name= './Upload/excel/123456.xls';
import("Org.Util.PHPExcel"); // 这里不能漏掉
import("Org.Util.PHPExcel.IOFactory");
$objReader = \PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel = $objReader-load($file_name,$encode='utf-8');
$sheet = $objPHPExcel-getSheet(0);
$highestRow = $sheet-getHighestRow(); // 取得总行数
$highestColumn = $sheet-getHighestColumn(); // 取得总列数
for($i=1;$i$highestRow+1;$i++){
$data[] = $objPHPExcel-getActiveSheet()-getCell('A'.$i)-getValue();
}
return $data;
}
有问题一定要及时弄清楚