ホームページ >バックエンド開発 >PHPチュートリアル >Thinkphp5.0 をインポートおよびエクスポートする方法

Thinkphp5.0 をインポートおよびエクスポートする方法

小云云
小云云オリジナル
2017-11-28 09:05:352371ブラウズ

ThinkPHP は、無料のオープンソースで、高速かつシンプルなオブジェクト指向の軽量 PHP 開発フレームワークであり、Apache2 オープンソース契約に基づいてリリースされ、エンタープライズ レベルのアプリケーション開発とアジャイル WEB アプリケーション開発を簡素化するために生まれました。この記事では主にThinkphp5.0のインポートとエクスポートの方法を紹介します。

まず、公式 Web サイト http://phpexcel.codeplex.com/ にアクセスして、最新の PHPExcel をダウンロードします

Thinkphp 拡張クラスは、通常、extend の下に配置されます

コントローラーでの呼び出しを容易にするために、インポートおよびエクスポート用のパブリック メソッドを作成します

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;
}


xls形式でExcelファイルに配列

/**
 * 数组转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";
    }
}

使用例:

インポートの原則:

まずThinkphpメソッドを通じてインポートするファイルをサーバーにアップロードし、次に呼び出しますアップロードされたパスに従ってパブリックインポートするメソッドは、次のようにインポートするExcelのファイルパスを渡します

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

上記の内容は、Thinkphp5.0のインポートとエクスポートの詳細な説明です。皆様のお役に立てれば幸いです。 。

関連する推奨事項:

thinkphp5 でデータベースにコンテンツを追加する方法

mysql をデータベースにインポートする方法

ThinkPHP は PHPExcel を使用して Excel データのインポートとエクスポートの完全な例を実装します

以上がThinkphp5.0 をインポートおよびエクスポートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。