PHPExcel的使用
最近在項目中需要把Excel表格中的數據導入到數據庫中,同時還要求把數據庫中的數據導出到Excel中,所以在這裏對PHPExcel的操作進行總結,大致分爲上面的兩種情況。
PHPExcel類庫下載地址http://download.csdn.net/detail/li741350149/9792683,下載完成解壓到你的項目中去,就可以使用了。爲了清晰,我的目錄結構如下:
在使用前,請先引入文件
導入數據到數據庫
require_once "./PHPExcel/PHPExcel/IOFactory.php";
require_once "./PHPExcel/PHPExcel.php";
Excel結構:
/**
* 導入數據到數據庫
* @param $file 要導入的Excel的文件路徑
* @return bool 保存數據成功,返回true;
*/
public function setDataToDb($file)
{
date_default_timezone_set('PRC');//設置時區
$fileType = PHPExcel_IOFactory::identify($file);//得到Excel的後綴類型
$objReader = PHPExcel_IOFactory::createReader($fileType);
$excelpath = $file;
$objPHPExcel = $objReader->load($excelpath);//進行加載
$sheet = $objPHPExcel->getSheet(0);//獲取第一個sheet
$highestRow = $sheet->getHighestRow(); //取得總行數
$highestColumn = $sheet->getHighestColumn(); //取得總列數
//進行循環,取出數據
$data = array();
for ($j = 2; $j <= $highestRow; $j++) //從第二行開始讀取數據
{
for ($k = 'A'; $k <= $highestColumn; $k++) //從A列讀取數據
{
$arr[$objPHPExcel->getActiveSheet()->getCell("$k" . 1)->getValue()] = $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();
}
var_dump($arr);
echo '<br/>';
/*
* 操作數據庫把數據存到數據庫中,在這裏只是簡單的展示了出來。
*/
}
return true;
}
這裏只是把數據取出來,操作數據庫並沒有寫,可以按照自己的邏輯進行編寫
導出數據到Excel
/**
* @param $file 保存文件的路徑
* @param $filename 文件名字
* @param $data 從數據庫得到的數據
*/
public function getDataFromDb($file,$filename,$data){
date_default_timezone_set('PRC');//設置時區
$objPHPExcel = new PHPExcel();
$objPHPExcel -> setActiveSheetIndex(0); //設置Sheet當前活動的sheet爲0;
$objSheet = $objPHPExcel -> getActiveSheet(); //得到操作對象
$objSheet -> setCellValue("A1","姓名") //設置Excel第一行的數據說明。
-> setCellValue("B1","年齡")
-> setCellValue("C1","電話")
-> setCellValue("D1","地址")
-> setCellValue("E1","編號");
$j = 2;
//把數據保存到Excel中
foreach ($data as $k => $v){
$objSheet -> setCellValue("A".$j,$v['姓名'])
-> setCellValue("B".$j,$v['年齡'])
-> setCellValue("C".$j,$v['電話'])
-> setCellValue("D".$j,$v['地址'])
-> setCellValue("E".$j,$v['編號']);
$j++;
}
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
//文件保存路徑
$path = $file . "/" . $filename . ".xls";
$res = $objWriter->save($path);
//把生成的Excel文件下載到本地
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.mb_convert_encoding($filename.".xls","gb2312","utf-8")); //轉換文件名的編碼
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($path));
ob_clean();
flush();
readfile($path);
}
數據在這裏只是模擬出來的。並不是從數據庫中得到的。同時把生成的Excel通過瀏覽器下載到本地。
生成的樣式
Test.php中的代碼:
<?php
/**
* 測試Excel.class.php類
* User: Administrator
* Date: 2017/3/29 0029
* Time: 16:19
*/
require_once "Excel.class.php";
$file = "D:/employee.xlsx";
$excel = new Excel();
//$excel -> setDataToDb($file);
$file = "D:";
$data = array(
array("姓名" => "小明",'年齡' => 12,"電話" => "12345678910","地址" => "鄭州","編號" => 1254),
array("姓名" => "小華",'年齡' => 13,"電話" => "12345678912","地址" => "鄭州","編號" => 1255),
array("姓名" => "小張",'年齡' => 14,"電話" => "12345678913","地址" => "鄭州","編號" => 1256),
array("姓名" => "小楊",'年齡' => 15,"電話" => "12345678918","地址" => "鄭州","編號" => 1257),
);
$excel -> getDataFromDb($file,'lijiafei',$data);
總結
上面只是PHPExcel最簡單的使用,PHPExcel還有很多功能可以使用,同時也可以操作多個Sheet,在這裏也只是操作了一個。可以自行百度。