>  기사  >  백엔드 개발  >  ThinkPHP는 PHPExcel을 사용하여 Excel 데이터를 가져오고 내보냅니다.

ThinkPHP는 PHPExcel을 사용하여 Excel 데이터를 가져오고 내보냅니다.

不言
不言원래의
2018-06-07 16:26:262238검색

이 글에서는 PHPExcel을 사용하여 Excel 데이터 가져오기 및 내보내기를 구현하는 ThinkPHP를 주로 소개합니다. 필요한 친구들은 참고할 수 있습니다.

이 글에 설명된 예제는 Thinkphp의 개발 프레임워크에서 사용됩니다. 다른 프레임워크에서 사용해도 동일합니다.방법으로 Excel의 가져오기 및 내보내기를 올바르게 구현하지 못하는 경우가 있습니다.이 문제는 기본적으로 phpExcel의 핵심 클래스의 참조 경로에 오류가 있는 경우입니다. 문제가 발생하면 모두가 Lu Jin이 올바르게 참조되었는지 테스트해야 합니다.

구체적인 단계는 다음과 같습니다.

(1) 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 [&#39;file_stu&#39;] [&#39;name&#39;] )) 
 {
 $tmp_file = $_FILES [&#39;file_stu&#39;] [&#39;tmp_name&#39;];
 $file_types = explode ( ".", $_FILES [&#39;file_stu&#39;] [&#39;name&#39;] );
 $file_type = $file_types [count ( $file_types ) - 1];
  /*判别是不是.xls文件,判别是不是excel文件*/
  if (strtolower ( $file_type ) != "xls")    
 {
   $this->error ( &#39;不是Excel文件,重新上传&#39; );
  }
 /*设置上传路径*/
  $savePath = SITE_PATH . &#39;/public/upfile/Excel/&#39;;
 /*以时间来命名上传的文件*/
  $str = date ( &#39;Ymdhis&#39; ); 
  $file_name = $str . "." . $file_type;
  /*是否上传成功*/
  if (! copy ( $tmp_file, $savePath . $file_name )) 
  {
   $this->error ( &#39;上传失败&#39; );
  }
 /*
  *对上传的Excel数据进行处理生成编程数据,这个函数会在下面第三步的ExcelToArray类中

  注意:这里调用执行了第三步类里面的read函数,把Excel转化为数组并返回给$res,再进行数据库写入
 */
 $res = Service ( &#39;ExcelToArray&#39; )->read ( $savePath . $file_name );
 /*
  重要代码 解决Thinkphp M、D方法不能调用的问题 
  如果在thinkphp中遇到M 、D方法失效时就加入下面一句代码
 */
 //spl_autoload_register ( array (&#39;Think&#39;, &#39;autoload&#39; ) );
 /*对生成的数组进行数据库的写入*/
 foreach ( $res as $k => $v ) 
 {
  if ($k != 0) 
  {
   $data [&#39;uid&#39;] = $v [0];
   $data [&#39;password&#39;] = sha1 ( &#39;111111&#39; );
   $data [&#39;email&#39;] = $v [1];
   $data [&#39;uname&#39;] = $v [3];
   $data [&#39;institute&#39;] = $v [4];
   $result = M ( &#39;user&#39; )->add ( $data );
   if (! $result) 
   {
    $this->error ( &#39;导入数据库失败&#39; );
   }
  }
 }
}

세 번째: ExcelToArrary 클래스는 phpExcel을 참조하고 Excel 데이터를 처리하는 데 사용됩니다
여기에 참고하세요:ExcelToArrary 클래스는 루트 디렉터리의 addons/services/ExcelToArrary.class.php에 내장되어 있습니다

class ExcelToArrary extends Service{
 public function __construct() {
  /*导入phpExcel核心类 注意 :你的路径跟我不一样就不能直接复制*/
  include_once(&#39;./Excel/PHPExcel.php&#39;);
 }
/**
* 读取excel $filename 路径文件名 $encode 返回数据的编码 默认为utf8
*以下基本都不要修改
*/ 
public function read($filename,$encode=&#39;utf-8&#39;){
   $objReader = PHPExcel_IOFactory::createReader(&#39;Excel5&#39;); 
   $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 패키지가 첨부됩니다.

(2) Excel 내보내기(가져오기보다 훨씬 간단함)

먼저 데이터베이스에서 Excel을 생성하기 위한 데이터를 찾습니다. 이상이 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 참고해주세요!

관련 권장사항:

thinkphp3.2에서 생성된 그림으로 phpexcel 내보내기 구현

Thinkphp3.2.3

에서 phpqrcode로 로고가 있는 QR 코드를 생성하는 구현 방법

위 내용은 ThinkPHP는 PHPExcel을 사용하여 Excel 데이터를 가져오고 내보냅니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.