satthi/csv-combine-plugin-for-cakephp

CakePHP CsvCombine

v3.2.8 2017-09-05 06:39 UTC

README

CsvCombine 插件用于 CakePHP3

Build Status Scrutinizer Code Quality

PHP 版本 5,CakePHP 版本 3

更新历史

  • 2015/05/01 为 CakePHP3 重构
  • 2016/05/17 添加固定长度支持

特点

  • 数组与 CSV・TSV 文件之间的转换功能
  • Cake1.3 或 2 中,文件的上传或保存都由系统管理,但我自己并没有使用,所以已经删除了...
  • 支持固定长度了!

准备

※ 已支持 composer

"satthi/csv-combine-plugin-for-cakephp": "*"

※ 如果不使用 composer 安装,请将 CsvCombine 放置在 plugins 目录中

在 bootstrap 中添加以下内容

Plugin::load('CsvCombine', ['autoload' => true]);

Csv 使用方法

<?php
namespace App\Controller;

use Cake\Core\Configure;

use CsvCombine\Form\CsvImportForm;

class CsvController extends AppController
{
    public function initialize()
    {
        parent::initialize();
        $this->loadComponent('CsvCombine.CsvExport');
    }
    public function export()
    {
        $list = [
            [
                'test1',
                'test2',
                'test3',
            ],
            [
                'test4',
                'test5',
                'test6',
            ],
        ];
        /*
         *@array $list 出力のための配列(二次元配列が基本)
         *@param $file_name 出力ファイル名(デフォルトはexport.csv)
         *@param $delimiter 区切り文字の設定(デフォルトは",")
         *@param $directory 一時保存ディレクトリ(デフォルトはTMP,最終的にファイルを削除をする)
         *@param $export_encoding 出力するファイルのエンコード(デフォルトはSJIS-win
         *@param $array_encoding 入力する配列のエンコード(デフォルトはUTF-8
        */
        return $this->CsvExport->export($list);
    }

    public function import()
    {
        $import = new CsvImportForm();
        $file = TMP . 'test.csv';
        $column = [
            'key1',
            'key2',
            'key3',
        ];
        /*
         *@array file ファイルパス(必須
         *@array $column カラム名を並び順に(必須
         *@param $delimiter 区切り文字を設定 (デフォルトは","で"\t"や"|"などを指定することが可能)
         *@param $array_encoding 出力する配列のエンコード(デフォルトはUTF-8
         *@param $import_encoding 入力するファイルのエンコード(デフォルトはSJIS-win
        */
        $result = $import->loadDataCsv($file,$column);
        debug($result);
        exit;
    }
}

固定长度使用方法

<?php
namespace App\Controller;

use Cake\Core\Configure;

use CsvCombine\Form\FixedLengthImportForm;

class CsvController extends AppController
{
    public function initialize()
    {
        parent::initialize();
        $this->loadComponent('CsvCombine.FixedLengthExport');
    }

    public function export()
    {
        $list = [
            [
                'あいう',
                'いいい',
                'uuu',
            ],
            [
                'あいう',
                'いいい',
                'uuu',
            ],
            [
                'あいう',
                'いいい',
                'uuu',
            ],
        ];
        $fixed_options = [
            8,
            10,
            6
        ];
        //makeでファイル作成のみ
        /*
         * export 固定長の出力アクション
         *
         * @array $list 出力のための配列(二次元配列が基本)
         * @array $fixed_options 出力のための固定長の設定(各カラムのバイト数)
         * @param $file_name 出力ファイル名(デフォルトはexport.txt)
         * @param $line_feed_code 改行コード(デフォルトは\r\n)
         * @param $directory 一時保存ディレクトリ(デフォルトはTMP,最終的に削除をする)
         * @param $export_encoding 出力するファイルのエンコード(デフォルトはSJIS-win
         * @param $array_encoding 入力する配列のエンコード(デフォルトはUTF-8
         */

        //$this->FixedLengthExport->make($list,$fixed_options);
        $this->FixedLengthExport->export($list,$fixed_options);

    }

    public function import()
    {
        $filename = TMP . 'test.txt';
        $column_list = [
            ['name' => 'column1', 'length' => 8],
            ['name' => 'column2', 'length' => 10],
            ['name' => 'column3', 'length' => 6],
        ];
        $import = new FixedLengthImportForm();
        /*
         * @text $fileName 固定長テキストファイ
         * @array $column_list 各カラム情報(name:カラム名,length:バイト数 デフォルトは空配列 空時には列の数だけ0から連番を振る)
         * @param $line_feed_code 改行コード(デフォルトは\r\n)
         * @param $array_encoding 出力するする配列のエンコード(デフォルトはUTF-8
         * @param $import_encoding 入力するテキストのエンコード(デフォルトはSJIS-win
         */
        $result = $import->loadData($filename, $column_list);
        debug($result);
        exit;
    }
}

许可协议

MIT 许可协议

版权所有 (c) 2011 Fusic Co., Ltd. (http://fusic.co.jp)

在此特此授予任何获得此软件及其相关文档副本(以下简称“软件”)的个人免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许获得软件的人进行上述行为,但受以下条件约束

上述版权声明和本许可协议应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他原因,无论该责任是否源自、因之而起或与之相关软件或软件的使用或任何其他方式。

作者

Satoru Hagiwara