PHP 一键导入导出Excel表格

PHPExcel类库下载

一键导入

HTML代码

<div id="myTabContent" class="tab-content">
     <div class="form-group" >
             <form action="...../exls" method="post" enctype="multipart/form-data">
                 <div class="form-group">
                     <label for="exampleInputFile">一键导入</label><br>
                     <font color="red">*从左到右为:姓名,电话,金额</font><br>
                     <font color="red">*一行一个玩家,纵向排列</font><br>
                     <input type="file" id="file" name="file">
                   </div>
                 <input type="submit" name="submit" value="Submit"/>
             </form>
         </div>
 </div>

PHP代码

	//一键导入xls表格
	public function exls(){
		/**
		 * 符合条件的文件格式
		 */
		$filename = $_FILES['file']['name'];
		/**
		 * 文件名
		 */
		$ext = preg_split("/\./", $filename);
		/**
		 * 分割文件名
		 */
		$ext = strtolower($ext[1]);
		/*
		* 获取文件后缀名
		*/
		$allowed_types = array("xls", "xlsx");
		$filePath = dirname(__FILE__) . "/" . $_FILES["file"]["name"];
		if (!in_array($ext, $allowed_types)) {
			echo "File type is wrong!";
			die;
		} else if (file_exists($filePath)) {
			echo "A file with this name already exists!";
			die;
		} else {
			move_uploaded_file($_FILES["file"]["tmp_name"], $filePath);
		}
		/**
		 * @param $val
		 * @return string
		 * 检查文件名是否符合要求,如果符合,就保存到指定路径。如果不符合,报错。
		 */
		import('phpexcel.PHPExcel', EXTEND_PATH);
		//$filePath=$_FILES["file"]["tmp_name"];
		//sleep(50);
		$PHPExcel = new \PHPExcel();
		//默认用excel2007读取excel,若格式不对,则用之前的版本进行读取
		$PHPReader = new \PHPExcel_Reader_Excel2007();
		if (!$PHPReader->canRead($filePath)) {
			$PHPReader = new PHPExcel_Reader_Excel5();
			if (!$PHPReader->canRead($filePath)) {
				return $this->error(null, "no file");
			}
		}
		$PHPExcel = $PHPReader->load($filePath);
		$sheetCount = $PHPExcel->getSheetCount();
		$sheetNames = $PHPExcel->getSheetNames();
		//var_dump($sheetNames);
		//die;
		/**读取excel文件中有多少个sheet*/
		$objExcel = array();
		for ($SheetID = 0; $SheetID < $sheetCount; $SheetID++) {
			/**读取excel文件中的工作表*/
			$name = $sheetNames[$SheetID];
			$currentSheet = $PHPExcel->getSheetByName($name);
			$name = iconv("utf-8", "gb2312", $name);
			/**取得最大的列号*/
			$allColumn = $currentSheet->getHighestColumn();
			/**取得一共有多少行*/
			$allRow = $currentSheet->getHighestRow();
			for ($currentRow = 1; $currentRow <= $allRow; $currentRow++) {
				/**从第A列开始输出*/
				for ($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++) {
					$val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65, $currentRow)->getValue();
					$val = iconv("utf-8", "gb2312", $val);
					$objExcel[$name][$currentRow - 1][ord($currentColumn) - 65] = $val;
					//编码需要转换成gb2312
					/*
					$val = urlencode($val);
					$objExcel[$name][$currentRow - 1][ord($currentColumn) - 65] = urldecode($val);
					*/
				}
			}
		}
		unlink($filePath);
		/*
		* $objExcel = json_encode($objExcel);
		* $objExcel = urldecode($objExcel);
		* 读取文件中的内容,因为json_encode()的参数必须是utf-8编码。为了保证汉字输出的结果,这里先将数组中的内容用urlencode进行编码,
		* 在被json_encode()编码之后,再用urldecode解码。
		*/
		//return $objExcel;
		$datas = $objExcel['Sheet1'];
		dump($datas);
	}

一键导出Excel表格

public function Excel($data)//传入 导出数据(数组)
    {
        // 引入类库
        import('phpexcel.PHPExcel', EXTEND_PATH);
        // 文件名和文件类型
        $fileName = "小明和他的同学";
        $fileType = "xlsx";
        // 模拟获取数据
        $data = $data;
        $obj = new \PHPExcel();
        // 以下内容是excel文件的信息描述信息
        $obj->getProperties()->setCreator(''); //设置创建者
        $obj->getProperties()->setLastModifiedBy(''); //设置修改者
        $obj->getProperties()->setTitle(''); //设置标题
        $obj->getProperties()->setSubject(''); //设置主题
        $obj->getProperties()->setDescription(''); //设置描述
        $obj->getProperties()->setKeywords('');//设置关键词
        $obj->getProperties()->setCategory('');//设置类型
        // 设置当前sheet
        $obj->setActiveSheetIndex(0);
        // 设置当前sheet的名称
        $obj->getActiveSheet()->setTitle('student');
        // 列标
        $list = ['A', 'B', 'C','D'];
        // 填充第一行数据
        $obj->getActiveSheet()
            ->setCellValue($list[0] . '1', '姓名')
            ->setCellValue($list[1] . '1', '年级')
            ->setCellValue($list[2] . '1', '年龄')
            ->setCellValue($list[3] . '1', '班级')
        // 填充第n(n>=2, n∈N*)行数据
        $length = count($data);
        for ($i = 0; $i < $length; $i++) {
            $obj->getActiveSheet()->setCellValue($list[0] . ($i + 2), $data[$i]['orderId'], \PHPExcel_Cell_DataType::TYPE_STRING);//将其设置为文本格式
            $obj->getActiveSheet()->setCellValue($list[1] . ($i + 2), $data[$i]['channel_id']);
            $obj->getActiveSheet()->setCellValue($list[2] . ($i + 2), $data[$i]['custId']);
            $obj->getActiveSheet()->setCellValue($list[3] . ($i + 2), $data[$i]['amount']); 
        }
        // 设置加粗和左对齐
        foreach ($list as $col) {
            // 设置第一行加粗
            $obj->getActiveSheet()->getStyle($col . '1')->getFont()->setBold(true);
            // 设置第1-n行,左对齐
            for ($i = 1; $i <= $length + 1; $i++) {
                $obj->getActiveSheet()->getStyle($col . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
            }
        }
        // 设置列宽
        $obj->getActiveSheet()->getColumnDimension('A')->setWidth(20);
        $obj->getActiveSheet()->getColumnDimension('B')->setWidth(20);
        $obj->getActiveSheet()->getColumnDimension('C')->setWidth(15);
        $obj->getActiveSheet()->getColumnDimension('D')->setWidth(15);
        // 导出
        ob_clean();
        if ($fileType == 'xls') {
            header('Content-Type: application/vnd.ms-excel');
            header('Content-Disposition: attachment;filename="' . $fileName . '.xls');
            header('Cache-Control: max-age=1');
            $objWriter = new \PHPExcel_Writer_Excel5($obj);
            $objWriter->save('php://output');
            exit;
        } elseif ($fileType == 'xlsx') {
            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            header('Content-Disposition: attachment;filename="' . $fileName . '.xlsx');
            header('Cache-Control: max-age=1');
            $objWriter = \PHPExcel_IOFactory::createWriter($obj, 'Excel2007');
            $objWriter->save('php://output');
            exit;
        }
    }
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值