ホームページ  >  記事  >  バックエンド開発  >  phpExcel のパッケージング_PHP チュートリアル

phpExcel のパッケージング_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-15 13:21:391050ブラウズ

/**
* 配列生成Excel
* @著者zouhao zouhao619@gmail.com
※使用例
* $excel =new Excel();
$data=配列(
Array('id'=>1,'name'=>'Destiny 1'),
array('id'=>2,'name'=>'Destiny 2')
);
$header=array('ID','キャラクター名');
$excel->setFileName('aaa');
$excel->setTitle('ワークスペース 1');
$excel->create($data,$header);
​*/
クラス Excel {
プライベート $excelObj;
private $fileName='download.xls';
/**
※ダウンロード時にファイル名を設定してください
* @param string $ファイル名
​*/
パブリック関数 setFileName($fileName){
$this->fileName=$fileName.'.xls';
}
/**
* タイトルを設定します
* @param 文字列 $title
​*/
パブリック関数 setTitle($title) {
$this->excelObj->getActiveSheet ()->setTitle ( $title );
}
パブリック関数 __construct() {
// Excel の自動読み込み機構との競合を避けるために、まず元のフレームワークの自動登録機構をキャンセルします
spl_autoload_unregister ( 'autoload' );
LIBRARY_PATH が必要です。 '/PHPExcel/PHPExcel.php';
$this->excelObj = 新しい PHPExcel ();
}
/**
* 合計数に基づいて列配列を返します
*
* @param int $count
* @return 配列
​*/
プライベート関数 getCharByNumber($data) {
// 頭を自動的に減算します
$count = カウント ( $data ['0'] );
$keys=array();
for($number = 1; $number $divisor= intval($number / 26);
$char = chr ( 64 + $number % 26 );
$char = $divisor == 0 ? $char : chr ( 64 +$divisor) 。 $keys [] = $char;
}
$keys を返します;
}
/**
* Excelテーブルを生成します
* @param array $data 二次元配列
* @param array $replace 置換される配列
​*/
public function create($data,$header=array(),$replace = null) {
empty($data) と exit('データなし');
$keys = $this->getCharByNumber ( $data );
$this->createHeader ( $header, $keys );
$j=0;
foreach ( $data as $i=>$vo ) {
$j=0;
foreach ( $vo as $key => $item ) {
If (isset ( $replace [$key] )){
$this->excelObj->setActiveSheetIndex (0)->setCellValue ( $keys [$j] . ($i + 2), $replace [$key] [$item] );
}その他{
$this->excelObj->setActiveSheetIndex ( 0 )->setCellValue ( $keys [$j] . ($i + 2), $item );
}
++$j;
}
}
//ダウンロード用に一時バッファに出力
header ( "Content-Type: application/force-download" );
header ( "Content-Type: application/octet-stream" );
header ( "Content-Type: application/download" );
header ( 'Content-Disposition:inline;filename="'.$this->fileName.'"' );
header ( "Content-Transfer-Encoding: バイナリ" );
header ( "キャッシュ制御: 必須再検証、事後チェック = 0、事前チェック = 0" );
header ( "プラグマ: キャッシュなし" );
$objWriter = PHPExcel_IOFactory::createWriter ( $this->excelObj, 'Excel5' );
$objWriter->save ( 'php://output' );
}
/**
*ヘッダーを作成します
*
* @param 配列 $data
​*/
プライベート関数 createHeader($header, $keys) {
$header = array_combine ( $keys, $header );
foreach ( $header as $key => $vo ) {
$this->excelObj->setActiveSheetIndex ( 0 )->setCellValue ( "{$key}1", $vo );
}
}
}


使用例:


$excel =new Excel();
$data=配列(
Array('id'=>1,'name'=>'Destiny 1'),
array('id'=>2,'name'=>'Destiny 2')
);
$header=array('ID','キャラクター名');
$excel->setFileName('aaa');
$excel->setTitle('ワークスペース 1');
$excel->create($data,$header); つまり、データベースから取得した二次元配列を直接作成することができます

さらに、一部のフィールドは int 型として保存され、create の 3 番目のパラメーターを参照できる型です

例:


$excel =new Excel();
$data=配列(
Array('id'=>1,'name'=>'Destiny 1','type'=>1),
array('id'=>2,'name'=>'Destiny 2','type'=>2)
);
$replace['type']=array(1=>'男性',2=>'かわいい女の子');
$header=array('ID','キャラクター名');
$excel->setFileName('aaa');
$excel->setTitle('ワークスペース 1');
$excel->create($data,$header,$replace);

www.bkjia.com本当http://www.bkjia.com/PHPjc/477193.html技術記事 ?php /** * 配列生成 Excel * @author zouhao zouhao619@gmail.com * 使用例 * $excel =new Excel() $data=array( array(id=1,name=天明1); =2,name=天明2) ); $header=a...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。