<?php

class Excel extends Controller {

        //直属高校
public function __construct() {
parent::Controller();
//初始化读取excel类
@$this->load->library("reader");
$reader = @$this->reader;
$reader->setOutputEncoding('UTF-8');
$this->load->model('LogModel', '', TRUE);
$this->cismarty->assign('base_url', base_url()); } public function index(){ $result=$this->LogModel->listlog(0);
$this->cismarty->assign('results', $result);
$this->cismarty->display('excel/excel.html');
} //上传文件1
public function upload1()
{
///home/wwwroot/excel/crs_edu_old/public/admin/system/excel
///home/wwwroot/excel/crs_edu_old/public/admin/system/application/excel/
$config['upload_path'] = APPPATH.'excel/'; if(!file_exists($config['upload_path'] ))
{
mkdir(APPPATH.'excel/',0755);
} $config['allowed_types'] = 'xls|jpg|png'; $config['encrypt_name']=true; $config['max_size'] = 31948800; $this->load->library('upload', $config); if (!$this->upload->do_upload('file'))
{ echo $this->upload->display_errors(); }
else
{ $file_name=$this->upload->data('file_name');
echo json_encode($file_name);
}
} //上传文件2
public function upload2()
{
$config['upload_path'] = APPPATH.'excel/';
$config['allowed_types'] = 'xls|jpg|png'; $config['encrypt_name']=true; $config['max_size'] = 31948800; $this->load->library('upload', $config); if (!$this->upload->do_upload('file'))
{ echo $this->upload->display_errors(); }
else
{ $file_name=$this->upload->data('file_name');
echo json_encode($file_name);
}
} public function getStrpos($str)
{
$strs="";
if(stripos($str,",")>0){ $data_arr=explode(",",$str); foreach($data_arr as $val){ $strs.=";".$val.";";
}
$strs=trim($strs,";"); return $strs;
}elseif(stripos($str,"、")>0){ $data_arr=explode("、",$str); foreach($data_arr as $val){ $strs.=";".$val.";";
}
$strs=trim($strs,";"); return $strs;
}elseif(stripos($str,",")>0){ $data_arr=explode(",",$str); foreach($data_arr as $val){ $strs.=";".$val.";";
}
$strs=trim($strs,";"); return $strs;
}else{ return $str;
} } /// 将1的内容合并到2的内容当中从而生成3
public function getExcelContent(){
header("content-type:text/html;charset=utf-8"); $this -> load -> library('Excel/PHPExcel.php'); $this->load->library('Excel/PHPExcel/Reader/PHPExcel_Reader_Excel5.php');
$objReader=new PHPExcel_Reader_Excel5(); $objPHPExcel = new PHPExcel(); $data2=array(); $excel2=APPPATH.'excel/'.$this->input->post('excel2');
//$excel2="/home/wwwroot/excel/crs_edu_old/public/admin/system/excel/zsgxry_2.xls"; $this->reader->read($excel2);
$numRows1 = $this->reader->sheets [0] [numRows];
$numCols1 = $this->reader->sheets [0] [numCols];
$project1 = $this->reader->sheets [0] [cells]; if ($numRows1 > 0 && $numCols1 > 0) {
for($i=2;$i<=$numRows1;$i++){
$data2[$i]['id']=$project1[$i][1];
$data2[$i]['company']=$project1[$i][2];
$data2[$i]['name']=$project1[$i][3];
$data2[$i]['sex']=$project1[$i][4];
$data2[$i]['birthday']=$project1[$i][5];
$data2[$i]['cankao']=$project1[$i][6]; }
}
$excel1=APPPATH.'excel/'.$this->input->post('excel1');
//$excel1="/home/wwwroot/excel/crs_edu_old/public/admin/system/excel/zsgxry_1.xls"; $objPHPExcel = $objReader->load($excel1);
//获取sheet表数目
$sheetCount = $objPHPExcel->getSheetCount(); //默认选中sheet0表
$sheetSelected = 0; $objPHPExcel->setActiveSheetIndex($sheetSelected); //获取表格行数
$rowCount = $objPHPExcel->getActiveSheet()->getHighestRow(); //获取表格列数
$columnCount = $objPHPExcel->getActiveSheet()->getHighestColumn(); $dataArr = array(); /** 循环读取每个单元格的数据 */
//行数循环
for ($row = 2; $row <= $rowCount; $row++){
//列数循环 , 列数是以A列开始
for ($column = 'A'; $column < $columnCount; $column++) { //目前出现 字符, , 、
//这一步是替换和上面的那个函数可以合并成一个
//第一出现的位置不区分大小写 , 职位分割
if(stripos($objPHPExcel->getActiveSheet()->getCell("E".$row)->getValue(),",")>0){ // $data_arr=explode(",",$objPHPExcel->getActiveSheet()->getCell("E".$row)->getValue()); // foreach($data_arr as $val){ // $dataArr[$row]["E"].=$val.";";
// }
// $dataArr[$row]["E"]=rtrim($dataArr[$row]["E"],";"); $str=$objPHPExcel->getActiveSheet()->getCell("E".$row)->getValue();
$dataArr[$row]["E"]=str_replace(",",'、',$str); //第一出现的位置不区分大小写 、
}elseif(stripos($objPHPExcel->getActiveSheet()->getCell("E".$row)->getValue(),"、")){
// $data_arr1=explode("、",$objPHPExcel->getActiveSheet()->getCell("E".$row)->getValue()); // foreach($data_arr1 as $val){ // $dataArr[$row]["E"].=$val.";";
// }
// $dataArr[$row]["E"]=rtrim($dataArr[$row]["E"],";"); $str=$objPHPExcel->getActiveSheet()->getCell("E".$row)->getValue();
$dataArr[$row]["E"]=str_replace("、",'、',$str); }elseif(stripos($objPHPExcel->getActiveSheet()->getCell("E".$row)->getValue(),",")){
// $data_arr1=explode("、",$objPHPExcel->getActiveSheet()->getCell("E".$row)->getValue()); // foreach($data_arr1 as $val){ // $dataArr[$row]["E"].=$val.";";
// } // $dataArr[$row]["E"]=rtrim($dataArr[$row]["E"],";"); $str=$objPHPExcel->getActiveSheet()->getCell("E".$row)->getValue();
$dataArr[$row]["E"]=str_replace(",",'、',$str); }else{ $dataArr[$row]["E"] = $objPHPExcel->getActiveSheet()->getCell("E".$row)->getValue(); } switch ($dataArr[$row]["E"])
{
case '党委副书记、纪委书记':
$dataArr[$row]["E"] ='党委副书记';
break;
case '党委副书记、副校长':
$dataArr[$row]["E"] ='党委副书记';
break;
case '校长、党委副书记':
$dataArr[$row]["E"] ='校长';
break;
case '院长、党委书记':
$dataArr[$row]["E"] ='党委书记'; break;
case '党委书记、院长':
$dataArr[$row]["E"] ='党委书记'; break;
case '副院长':
$dataArr[$row]["E"] ='副校长';
break;
case '党委书记、校长':
$dataArr[$row]["E"] ='党委书记'; break;
case '校长、党委书记':
$dataArr[$row]["E"] ='党委书记'; break;
case '院长、党委副书记':
$dataArr[$row]["E"] ='校长';
break;
case '常务副校长(正局级)':
$dataArr[$row]["E"] ='常务副校长';
break;
case '常务副校长(正厅级)':
$dataArr[$row]["E"] ='常务副校';
break;
case '党委常务副书记(正局级)':
$dataArr[$row]["E"] ='党委常务副书记';
break;
case '党委常务副书记(正厅级)':
$dataArr[$row]["E"] ='党委常务副书记';
break;
case '党委常务副书记(正局级)、副校长':
$dataArr[$row]["E"] ='党委常务副书记';
break;
case '党委常务副书记、纪委书记':
$dataArr[$row]["E"] ='党委常务副书记';
break;
case '党委副书记、副校长':
$dataArr[$row]["E"] ='党委副书记';
break;
case '党委副书记、纪委书记':
$dataArr[$row]["E"] ='党委副书记';
break;
case '校长、党委副书记':
$dataArr[$row]["E"] ='校长';
break;
default:
$dataArr[$row]["E"] = $this->getStrpos($objPHPExcel->getActiveSheet()->getCell("E".$row)->getValue());
} $dataArr[$row]["company"] = $objPHPExcel->getActiveSheet()->getCell("A".$row)->getValue();
$dataArr[$row]["name"] = $objPHPExcel->getActiveSheet()->getCell("B".$row)->getValue();
$dataArr[$row]["sex"] = $objPHPExcel->getActiveSheet()->getCell("C".$row)->getValue();
$dataArr[$row]["birthday"] = $objPHPExcel->getActiveSheet()->getCell("D".$row)->getValue();
$dataArr[$row]["F"] = $objPHPExcel->getActiveSheet()->getCell("F".$row)->getValue();
}
} $data_arr=$dataArr;
//var_dump($dataArr); /**
* 两个数组进行对比查询
* 将1的内容 放到2中
* excel1为数组 arr1
* excel2为数组 arr2
*
* (复杂度太高 需进行 闭包改进) n*n
*
* 将数组进行比较 因为多维数组 key不同不可进行key对比
*
*/ if(count($data_arr)==count($data2)){ foreach($data_arr as $key=>$val){
unset($data_arr[$key]['E']);
unset($data_arr[$key]['F']);
foreach($val as $kev1=>$val1){ if($data_arr[$key][$kev1]!==$data2[$key][$kev1]){
echo "excel1文件:你获取的数据不一样在".$data_arr[$key][$kev1]."行数在{$key},{$kev1}";
echo "excel2文件:你获取的数据不一样在".$data2[$key][$kev1]."行数在{$key},{$kev1}"; exit(); }
}
}
}else{
echo "数据不一";
exit;
} $objPHPExcel -> getDefaultStyle() -> getFont() -> setSize(10);
$objPHPExcel->getActiveSheet()->getStyle('C')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT); $objPHPExcel -> setActiveSheetIndex(0)
-> setCellValue('A1', '干部id(不可改)')
-> setCellValue('B1', '单位(不可改)')
-> setCellValue('C1', '姓名(不可改)')
-> setCellValue('D1', '性别(不可改)')
-> setCellValue('E1', '生日(不可改)')
-> setCellValue('F1', '职务参考(任免审批表填写职务)')
-> setCellValue('G1', '职务统计(可选值:党委书记;校长;党委常务副书记;党委副书记;常务副校长;副校长;总会计师)')
-> setCellValue('H1', '排序(填写自然数字)'); foreach($data2 as $i=>$val){ $objPHPExcel -> getActiveSheet()-> setCellValue('A'.$i, $data2[$i]['id']);
$objPHPExcel -> getActiveSheet()-> setCellValue('B'.$i, $data2[$i]['company']);
$objPHPExcel -> getActiveSheet()-> setCellValue('C'.$i, $data2[$i]['name']);
$objPHPExcel -> getActiveSheet()-> setCellValue('D'.$i, $data2[$i]['sex']);
$objPHPExcel -> getActiveSheet()-> setCellValue('E'.$i, $data2[$i]['birthday']);
$objPHPExcel -> getActiveSheet()-> setCellValue('F'.$i, $data2[$i]['cankao']);
$objPHPExcel -> getActiveSheet()-> setCellValue('G'.$i, $dataArr[$i]['E']);
$objPHPExcel -> getActiveSheet()-> setCellValue('H'.$i, $dataArr[$i]['F']);
} header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename=直属高校.xls');
header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output'); $data['excel1']=basename($excel1);
$data['excel2']=basename($excel2);
$data['type']=0;
$data['excel_time']=date('Y-m-d H:i:s',$this->input->server('REQUEST_TIME'));
$data['client_ip']=$this->input->ip_address(); $this->LogModel->addLog($data); } }
?>

代码冗余比较严重 测试版本

php 之 excel导出导入合并的更多相关文章

  1. 使用NPOI组件完成的Excel导出导入(附源代码,测试通过)

    最近遇到一个Excel导入导出的问题,要支持winform和webform,这里我是一个认真严谨的coder,所以决定把这个记录下来!和大家一起分享一下!如果需要的同学可以下载哦! 对于NPOI这个组 ...

  2. excel导出导入通用方法

    /** * 方法说明:批量导出通用方法 * 创建时间:2018年8月24日 *** * @param filePath 文件地址 * @param sheetName 分页名称 * @param ti ...

  3. C#Excel导出导入

    using System; using System.Collections.Generic; using NPOI; using NPOI.HPSF; using NPOI.HSSF; using ...

  4. java excel导出(表头合并,多行表头)

    @RequestMapping(value="orderExcelList2") public void orderExcelList2forJava(Order order,Ht ...

  5. excel 导出导入

    /** * 导出 * @param * @param * @return */ public function exportexcel() { set_time_limit(0); ini_set(' ...

  6. php做EXCEL数据导出导入开发的一些小问题

    前两天刚刚做开发CRM系统项目,在做要做EXCEL导出导入功能,因为以前做.NET开发用的是NPOI,但可是没找到PHP版本的,所以就网搜找了个国外的开源PHPEXCEL , 一开始只是做了简单的导入 ...

  7. java利用EasyPoi实现Excel导出功能

    easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言( ...

  8. 用PHPExcel导出导入Excel

    thinkPHP5.0框架 查询数据库调用Excel方法 public function exportlist(){ $orderModel = new OrderModel(); if($start ...

  9. java 中Excel的导入导出

    部分转发原作者https://www.cnblogs.com/qdhxhz/p/8137282.html雨点的名字  的内容 java代码中的导入导出 首先在d盘创建一个xlsx文件,然后再进行一系列 ...

随机推荐

  1. CentOS Linux 修改主机名

    一.CentOS5 修改主机名 二.CentOS6 修改主机名 三.CentOS7 修改主机名 静态的(Static hostname)        "静态"主机名也称为内核主机 ...

  2. Fullscreen API与DOM监听API

    前言 以下几个API,在web开发中可以简化我们一部分交互操作. Fullscreen API 有时候我们想要全屏预览的效果,比如类似于图片预览.幻灯片播放等.全屏API是一个很好的选择. 基本用法 ...

  3. 多测师讲解a'pi自动化框架设计思想_高级讲师肖sir

    API自动化框架API自动化框架分为conf.data.utils.api.testcase.runner.report.log8个模块.conf是用来储存系统环境.数据库.邮件等的配置参数.项目的绝 ...

  4. 多测师讲解selenium_运行报告相出错归纳_高级讲师肖sir

    <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'> EETraceback (most recent c ...

  5. 多测师讲解IDE工具python_001.2pycham_安装

    PyCharm安装使用教程 Pycharm 是目前 Python 语言最好用的集成开发工具. 下载 Pycharm 载时有两种版本选择 Professional(专业版,收费)和Community(社 ...

  6. 【Curl】【转】curl用法!

    curl基础用法! www.ruanyifeng.com/blog/2019/09/curl-reference.html

  7. 一入Java深似海

    Java的基础语法 一个java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来写协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象: 对象是一个类的实例,有状态和行为.例如 ...

  8. jenkins 构建 job 并获取其状态的实现

    目录 BACKGROUND INVESTIGATION I 1. 连续触发的相同 job 构建不会重复入队 2. 连续触发的不同 job 构建会各自入队 3. 参数变动的相同 job 构建将分别入队 ...

  9. Redis 字典结构细谈

    Redis 字典底层基于哈希表实现. 一.哈希表结构 1.dictht: typedef struct dictht { dictEntry **table; //哈希表数组,存储具体的键值对元素,对 ...

  10. lumen中间件 Middleware

    app/http 下新建 TestMiddleware.php <?php namespace App\Http\Middleware; use Closure; class TestMiddl ...