PHP による Excel ファイルのインポートとエクスポート

WBOY
リリース: 2016-08-08 09:24:00
オリジナル
1272 人が閲覧しました

Excelテーブルを操作するには、PHPExcelプラグインを使用する必要があります。私は普段CIフレームワークを使っているのでCIフレームワークで紹介します。

まず、PHPExcel の関連ファイルを紹介します:

$this->load->library('PHPExcel/IOFactory');
$this->load->model('search_model');
ログイン後にコピー
次に、Excel ファイルをエクスポートする方法を紹介します。 まず、新しいワークシートを作成して初期化する必要があります:

//新建工作表
$objPHPExcel = new PHPExcel();
// 操作第一个工作表 
$objPHPExcel->setActiveSheetIndex(0); 
// 设置工作薄名称 
$objPHPExcel->getActiveSheet()->setTitle("集合"); 
// 设置默认字体和大小 
$objPHPExcel->getDefaultStyle()->getFont()->setName("宋体"); 
$objPHPExcel->getDefaultStyle()->getFont()->setSize(10); 
ログイン後にコピー
次に、もちろんヘッダーを設定します。設定できません。 setCellValueByColumnAndRow( $col, $row, $name) メソッドの最初のパラメータは操作の列 (0 から始まります)、2 番目のパラメータは操作の行 (1 から始まります)、 3番目のパラメータは設定したい値です。 :

$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, 1, " ");
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, 1, "IMSI");
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(2, 1, "IMEI");
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(3, 1, "设备号");
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(4, 1, "号段");
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(5, 1, "归属地");
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(6, 1, "运营商");
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(7, 1, "时间");
ログイン後にコピー
ヘッダーを設定した後、1行ずつ値を割り当て始めます。 操作方法は上記と同じです:

$row = 2;
$i = 0;
foreach($data as $item){
	$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, $row, $i+1);
	$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, $row, $item['QQ']);
	$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(2, $row, $item['MSN']);
	$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(3, $row, $item['DeviceID']);
	$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(4, $row, $item['RTX']);
	$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(5, $row, $item['Area']);
	$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(6, $row, $item['Type']);
	$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(7, $row, $item['TimeStamp']);
	$row++;
	$i++;
}
ログイン後にコピー
最後に、ファイルを出力します。ダウンロード用のページ:

$objWriter = IOFactory::createWriter($objPHPExcel, 'Excel5');     
ob_end_clean();
header("Pragma: public");     
header("Expires: 0");    
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");     
header("Content-Type:application/force-download");     
header("Content-Type: application/vnd.ms-excel;charset=UTF-8");     
header("Content-Type:application/octet-stream");     
header("Content-Type:application/download");     
header("Content-Disposition:attachment;filename=result.xls"); //定义文件名   
header("Content-Transfer-Encoding:binary");     
$objWriter->save("php://output");
ログイン後にコピー
インポート方法も同様です。まずファイルをバックグラウンドにアップロードし、パスを取得してから Excel を開きます。

$orig_name = explode('.',$upload_data['orig_name'])[0];//原始文件名
$extend=strrchr ($upload_data['file_name'],'.'); //获取文件类型
$readerType = ($extend == ".xlsx") ? "Excel2007" : "Excel5";
$path = $config['upload_path'].$upload_data['file_name']; //文件路径
$objPHPExcel = new IOFactory();
$objReader = $objPHPExcel::createReader($readerType)->load($path);
$sheet = $objReader->getSheet( 0 );
ログイン後にコピー

次に、ループでデータを読み取り、データベースに保存します:

$highestRow = $sheet->getHighestRow(); // 取得总行数 但是很多无数据的空白行也读取了,所以未采用此方法
$highestColumn = $sheet->getHighestColumn(); // 取得总列数
$colspan = range( 'A', $highestColumn );

$rowArray = $sheet->getRowDimensions();// 取得总行数 
$rowCount = count($rowArray);
//循环读取excel文件(因为第一行我一般都加了表头,所以总是从第二行开始读数据)
for ( $j = 2; $j <= $rowCount; $j++ ) {
	$array = array( );
	foreach ( $colspan as $value ) {
		$array[] = $objReader->getActiveSheet()->getCell( $value . $j )->getValue();
	}
	
	//插入表中
	$sql = "insert into im_blacklist(`name`,`MAC`,`IMSI`,`IMEI`,`groupid`) values('".$array[1]."','".$array[2]."',".$array[3].",".$array[4].",".$id.")";
	$this->db->query($sql);
}
ログイン後にコピー
ただし、このメソッドを読み取るときは、Excel カーソルが置かれている行に関連します。Excel を開いて、その行を移動するのが最善です。カーソルを表の右下隅に移動し、Excel を閉じて読み取り操作を実行すると、すべてのデータが正しく読み取られます。


上記では、PHP での Excel ファイルのインポートとエクスポートについて、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート