Maison  >  Article  >  développement back-end  >  Comment importer et exporter Thinkphp5.0

Comment importer et exporter Thinkphp5.0

小云云
小云云original
2017-11-28 09:05:352310parcourir

ThinkPHP est un framework de développement PHP léger, orienté objet, gratuit et open source, rapide et simple. Il est publié dans le cadre de l'accord open source Apache2 et est né pour simplifier le développement d'applications au niveau de l'entreprise et le développement d'applications WEB agiles. Dans cet article, nous partageons principalement avec vous comment importer et exporter Thinkphp5.0.

Allez d'abord sur le site officiel http://phpexcel.codeplex.com/ pour télécharger la dernière version de PHPExcel

Les classes d'extension Thinkphp sont généralement placées sous extend

Écrire une méthode publique d'importation et d'exportation, pratique à appeler dans le contrôleur

Importer un fichier Excel

/**
 * 导入excel文件
 * @param  string $file excel文件路径
 * @return array        excel文件内容数组
 */
function import_excel($file){
    // 判断文件是什么格式
    $type = pathinfo($file);
    $type = strtolower($type["extension"]);
    $type=$type==='csv' ? $type : 'Excel5';
    ini_set('max_execution_time', '0');
    Loader::import('PHPExcel.PHPExcel');
 
    // 判断使用哪种格式
    $objReader = PHPExcel_IOFactory::createReader($type);
    $objPHPExcel = $objReader->load($file);
    $sheet = $objPHPExcel->getSheet(0);
    // 取得总行数
    $highestRow = $sheet->getHighestRow();
    // 取得总列数
    $highestColumn = $sheet->getHighestColumn();
 
    //循环读取excel文件,读取一条,插入一条
    $data=array();
    //从第一行开始读取数据
    for($j=1;$j<=$highestRow;$j++){
        //从A列读取数据
        for($k=&#39;A&#39;;$k<=$highestColumn;$k++){
            // 读取单元格
            $data[$j][]=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();
        }
    }
    return $data;
}


Tableau vers un fichier Excel au format xls

/**
 * 数组转xls格式的excel文件
 * @param  array  $data      需要生成excel文件的数组
 * @param  string $filename  生成的excel文件名
 *      示例数据:
        $data = array(
            array(NULL, 2010, 2011, 2012),
            array(&#39;Q1&#39;,   12,   15,   21),
            array(&#39;Q2&#39;,   56,   73,   86),
            array(&#39;Q3&#39;,   52,   61,   69),
            array(&#39;Q4&#39;,   30,   32,    0),
           );
 */
function create_xls($data,$filename=&#39;simple.xls&#39;){
    ini_set(&#39;max_execution_time&#39;, &#39;0&#39;);
    Loader::import(&#39;PHPExcel.PHPExcel&#39;);
    $filename=str_replace(&#39;.xls&#39;, &#39;&#39;, $filename).&#39;.xls&#39;;
    $phpexcel = new PHPExcel();
    $phpexcel->getProperties()
        ->setCreator("Maarten Balliauw")
        ->setLastModifiedBy("Maarten Balliauw")
        ->setTitle("Office 2007 XLSX Test Document")
        ->setSubject("Office 2007 XLSX Test Document")
        ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
        ->setKeywords("office 2007 openxml php")
        ->setCategory("Test result file");
    $phpexcel->getActiveSheet()->fromArray($data);
    $phpexcel->getActiveSheet()->setTitle(&#39;Sheet1&#39;);
    $phpexcel->setActiveSheetIndex(0);
    header(&#39;Content-Type: application/vnd.ms-excel&#39;);
    header("Content-Disposition: attachment;filename=$filename");
    header(&#39;Cache-Control: max-age=0&#39;);
    header(&#39;Cache-Control: max-age=1&#39;);
    header (&#39;Expires: Mon, 26 Jul 1997 05:00:00 GMT&#39;); // Date in the past
    header (&#39;Last-Modified: &#39;.gmdate(&#39;D, d M Y H:i:s&#39;).&#39; GMT&#39;); // always modified
    header (&#39;Cache-Control: cache, must-revalidate&#39;); // HTTP/1.1
    header (&#39;Pragma: public&#39;); // HTTP/1.0
    $objwriter = PHPExcel_IOFactory::createWriter($phpexcel, &#39;Excel5&#39;);
    $objwriter->save(&#39;php://output&#39;);
    exit;
}
数据转csv格式的excle
/**
 * 数据转csv格式的excle
 * @param  array $data      需要转的数组
 * @param  string $header   要生成的excel表头
 * @param  string $filename 生成的excel文件名
 *      示例数组:
        $data = array(
            &#39;1,2,3,4,5&#39;,
            &#39;6,7,8,9,0&#39;,
            &#39;1,3,5,6,7&#39;
            );
        $header=&#39;用户名,密码,头像,性别,手机号&#39;;
 */
function create_csv($data,$header=null,$filename=&#39;simple.csv&#39;){
    // 如果手动设置表头;则放在第一行
    if (!is_null($header)) {
        array_unshift($data, $header);
    }
    // 防止没有添加文件后缀
    $filename=str_replace(&#39;.csv&#39;, &#39;&#39;, $filename).&#39;.csv&#39;;
    ob_clean();
    Header( "Content-type:  application/octet-stream ");
    Header( "Accept-Ranges:  bytes ");
    Header( "Content-Disposition:  attachment;  filename=".$filename);
    foreach( $data as $k => $v){
        // 如果是二维数组;转成一维
        if (is_array($v)) {
            $v=implode(&#39;,&#39;, $v);
        }
        // 替换掉换行
        $v=preg_replace(&#39;/\s*/&#39;, &#39;&#39;, $v);
        // 解决导出的数字会显示成科学计数法的问题
        $v=str_replace(&#39;,&#39;, "\t,", $v);
        // 转成gbk以兼容office乱码的问题
        echo iconv(&#39;UTF-8&#39;,&#39;GBK&#39;,$v)."\t\r\n";
    }
}

Exemple d'utilisation :

Principe d'importation :

Téléchargez d'abord le fichier à importer sur le serveur via la méthode Thinkphp, puis appelez le public méthode d'importation en fonction du chemin téléchargé. Entrez le chemin du fichier Excel à importer, comme suit

public function importUser(){
        $data=import_excel(&#39;./a.xls&#39;);
        print_r($data);
        exit;
    }

Le contenu ci-dessus est une explication détaillée de l'importation et de l'exportation de Thinkphp5.0. cela peut aider tout le monde.

Recommandations associées :

Comment ajouter du contenu à la base de données dans thinkphp5

Méthode MySQL d'importation de la base de données

ThinkPHP utilise PHPExcel pour implémenter un exemple complet d'importation et d'exportation de données Excel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn