ホームページ  >  記事  >  バックエンド開発  >  Codeigniter (CI) と PHPExcel クラスを組み合わせてデータのインポートを完了します

Codeigniter (CI) と PHPExcel クラスを組み合わせてデータのインポートを完了します

WBOY
WBOYオリジナル
2016-06-20 12:33:531246ブラウズ


1. PHPExcel を Codeigniter にインストールします

1) 圧縮パッケージ内の Classes フォルダーの内容を applicationlibraries ディレクトリに解凍します。 ディレクトリ構造は次のとおりです。

– applicationlibrariesPHPExcel.php

– applicationlibrariesPHPExcel (フォルダー)

2) applicationlibrariesPHPExcelIOFactory.php ファイルを変更します

– クラス名を PHPExcel_IOFactory から に変更します。 IOFactory は、CI クラスの命名規則に従います。

– コンストラクターを public(__construct) に変更します


2. インストールが完了したら、Excel エクスポート用のコントローラー(Controller)を記述します。

public functionindex(){


// アップロードされたファイルの存在値を判定しますfile
if (! Empty ($ _ files)) {

$ Filename = $ _Files ['File'] ['name'] // "ファイル"]["タイプ"; ];//アップロードされるファイルの種類
$filesize = $_FILES["file"]["size"];//アップロードされるファイルのサイズ(バイト単位)
$filetmp = $_FILES["file" ]["tmp_name"];//サーバーに保存されているファイルの一時コピーの名前
,,, ファイルのアップロードによるエラー コード


if($ ファイルタイプ=="application/vnd.ms-excel" || $filetype=="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"){

$ filePath = 'uploads/excel/';
excel*/
$ this-> load-> library( 'phpexcel.php');
$ this->アップロードされたファイルの
$ extend = strrchr($ filename、 '。');

$ uploadfile = $ filepath成功した場合は true を返し、そうでない場合は false を返します。
$result=move_uploaded_file($filetmp,$uploadfile);//現在のディレクトリにアップロードされた場合



= IOFactory::identify($uploadfile);//入力ファイルの形式を決定します
$objPHPExcel = $objReader- >load($uploadfile);読む
$highestRow = $sheet->getHighestRow( ); ;

/* 最初のメソッド for($j=1;$j<=$highestRow;$j++) for($ j=1;$j<=$highestRow;$j++) / /最初の行からデータの読み取りを開始します
// // この方法は簡単ですが、「\」の結合は不適切です。配列にマージされ、フィールド値がデータベースに挿入されます
// 測定値は Excel で測定されます。 \ import を含むデータは空になります
//
$str .=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'\';//セル
// エコー $str; );

$ Strs = Explode ("\", $ Str);
Print_r ($ Strs)
$ SQL = "Te (` ID`, `name`) (
' { $ strs [0]} '、

sqlステートメントは間違っています'; */

/*2 番目のメソッドの 2 番目のメソッド*/
$ Objworksheet = $objPHPExcel->getActiveSheet();
$highestColumn = $objWorksheet->getHighestColumn();
$ hightiestcolumnindex = phpexcel_cell :: columnindexfromstring($ hightestcolumn); //列の総数
🎜>) 🎜> / $sql = "INSERT INTO admins(`account`, `pwd`, `username`, `power`, `tel`,`sex`,`work_numjob`,`job`,`sector`) VAL UES (
// '{$ strs [0]}'、
// '{$ strs [3]}'、
'、
' account '=&gt; $ arr [' 0 ']] ,
'username'=>$arr['2'],
                                            'power'=>$arr['3'],
'tel'=>$arr['4'],
'sex'=>$arr['5'],
'work_num'=>$arr['6'],
'job'=> ;$arr['7'],
'sector'=>$arr['8'],

);

$this->db->insert("admins", $data);

}
unlink($uploadfile);
show_msg("导入成功",site_url("链接地址"));//跳转地址
//删除上传的Excel文件

}

}else{

show_msg("上传文件非cvs格式,请重新上传");
}


}else{

switch ($fileerror){
ケース 1:
show_msg("上传的文件超过了php.ini中upload_max_filesize选项制限的值。");
Break;
ケース 2:
show_msg("上传文件的大小超过了HTML 表单中 MAX_FILE_SIZE 选项指定值");
Break;
ケース 3:
show_msg("文件只有部分被上传");
Break;
ケース 4:
show_msg("ファイルはアップロードされていません");
Break;
}


🎜>

注:

読み込み方法excelは指定できないので、ファイルを自動認識して自動で読み込むことができます。

3. Excel の詳細を確認します


1. Excel をインポートするのが最も簡単です最良の方法は、PHPExel の IO Factory を使用し、PHPExcel_IOFactory クラスの静的メソッド ロードを呼び出すことです。Excel2007、Excel2003XML、OOCalcSYLK、Gnumeric、CSV などのドキュメント形式を自動的に識別できます。 PHPExcel のインスタンスを返します。

//ファクトリ クラスを読み込みます

include'PHPExcel/IOFactory.php';

//読み込む xls ファイルのパス

$inputFileName = './sampleData/example1.xls';

/**PHPExcel_IOFactoryのloadメソッドを使用してExcel操作オブジェクトを取得 **/
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);

// 現在のアクティブシートを取得し、toArray メソッドを呼び出し、テーブルの 2 次元配列を取得します


$sheetData =$objPHPExcel->getActiveSheet()->toArray(null, true,true,true);

var_dump($sheetData);

1. Excel ドキュメントをロードするための ExcelReader を作成します

この Excel ドキュメントの形式がわかっている場合は、対応する Reader を作成して、読み取る Excel ドキュメントをロードできます。ただし、間違った種類のドキュメントをロードすると、予期しないエラーが発生する可能性があります。

$inputFileName = './sampleData/example1.xls';

/** 新しい Excel5 リーダーを作成します**/

$objReader = new PHPExcel_Reader_Excel5();

// $objReader = new PHPExcel_Reader_Excel2007();

// $objReader = new PHPExcel_Reader_Excel2003XML();

// $objReader = new PHPExcel_Reader_OOCalc();
// $objReader = new PHPExcel_Reader_SYLK();
// $objReader = new PHPExcel_Reader_Gnumeric();
// $objReader = new PHPExcel_Reader_CSV();
/** $inputFileName を PHPExcel オブジェクトにロードします**/
$objPHPExcel = $objReader->load($inputFileName);

// 現在のアクティブシートを取得します

$curSheet =$objPHPExcel->getActiveSheet();
🎜 > //テーブルのデータを 2 次元配列の形式で返します

$sheetData = $curSheet->toArray(null,true,true,true); var_dump($sheetData);

読み取るファイルの形式が分からなくても、PHPExcel_IOFactory の createReader メソッドを使用して Reader オブジェクトを取得することもできます。

$inputFileType = 'Excel5'; // $inputFileType = 'Excel2007';

// $inputFileType = 'Excel2003XML ';

// $inputFileType = 'OOCalc';

// $inputFileType = 'SYLK';

// $inputFileType = 'Gnumeric';

// $inputFileType = 'CSV';

$inputFileName = './sampleData/example1.xls';

/**  $inputFileType で定義されたタイプの新しいリーダーを作成します**/
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
/* *   $inputFileName を PHPExcel オブジェクトにロードします**/
$objPHPExcel = $objReader->load($inputFileName);

// 現在のアクティブなシートを取得します

$curSheet = $objPHPExcel-> getActiveSheet ();

//テーブルのデータを 2 次元配列の形式で返します

$sheetData = $curSheet->toArray(null,true,true,true) );

var_dump($sheetData);

ファイルを読み取る前にファイル形式が不明な場合は、IOFactory のidentify() メソッドを通じてファイルの種類を取得し、createReader() メソッドを使用してファイル リーダーにアクセスできます。

$inputFileName = './sampleData/example1.xls';

/**入力ファイルの形式を決定します **/
$inputFileType = PHPExcel_IOFactory::identify($inputFileName) ;
/**対応するリーダーを装着してください※*/
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
/**読み込むファイルをロード **/
$objPHPExcel = $objReader->load ($inputFileName);

2. Excel の読み取りオプションを設定します

load() メソッドを使用してファイルを読み込む前に、読み取りオプションを設定して読み込みの動作を制御できます。

2.1.スプレッドシート ファイルからの読み取り専用データ

setReadDataOnly() メソッドでは、テーブル データのデータ型を考慮しないようにリーダーを設定し、文字列形式で返します


$inputFileType = 'Excel5';
$inputFileName = './sampleData/example1.xls';

/**  $inputFileType で定義されたタイプの新しいリーダーを作成します**/
$objReader = PHPExcel_IOFactory::createReader( $inputFileType);
/**構成セルのデータは文字列として返されます **/
$objReader->setReadDataOnly(true);
/**  $inputFileName を PHPExcel オブジェクトにロードします**/
$objPHPExcel = $objReader->load($inputFileName);

$sheetData =$objPHPExcel->getActiveSheet()->toArray(null,true,true,true); ($sheetData);


詳細: http://blog.csdn.net/andy1219111/article/details/7673796; 🎜>


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